Currently, the saving of parameters done in ValidatorParams.scala assumes that all parameters in EstimatorParameterMaps are JSON serializable. Such an assumption causes CrossValidator and TrainValidationSplit persistence to fail when the internal estimator to these meta-algorithms is not JSON serializable. One example is OneVsRest which has a classifier (estimator) as a parameter.
The changes would involve removing the assumption in validator params that all the estimator params are JSON serializable. This could mean saving parameters that are not JSON serializable separately at a specified path.