[英]Conditional json parsing in Scala
import com.fasterxml.jackson.annotation.JsonInclude
import com.fasterxml.jackson.databind.ObjectMapper
import com.fasterxml.jackson.module.scala.DefaultScalaModule
import com.fasterxml.jackson.module.scala.experimental.ScalaObjectMapper
case class CampaignSparkParameters( category : String )
object CampaignSparkParameters {
case class Inner(
booster: String,
tree_method: String,
verbosity:Int,
nthread:String,
num_workers:Int,
early_stopping_rounds:Int,
colsample_bytree:Float,
subsample:Float,
objective:String,
eval_metric:String,
lambda : Float,
eta:Float,
alpha:Float,
gamma:Float,
max_depth:Int,
max_bin:Int,
num_round:Int,
missing:Int,
seed:String )
}
object CampaignSparkParameterParser {
val mapper: ObjectMapper with ScalaObjectMapper = (new ObjectMapper() with ScalaObjectMapper)
.registerModule(DefaultScalaModule)
.setSerializationInclusion(JsonInclude.Include.NON_ABSENT)
.asInstanceOf[ObjectMapper with ScalaObjectMapper]
def parseParameters(args: Array[String]): CampaignSparkParameters = {
mapper.readValue[CampaignSparkParameters](args(0))
}
def parametersToArgs(parameters: CampaignSparkParameters): Array[String] = {
Array(
mapper
.writerWithDefaultPrettyPrinter()
.writeValueAsString(parameters)
)
}
def sparkParamsToMap(parameters: CampaignSparkParameters): Map[String, Any] = {
Map(
)
}
}
我正在传递这样的 json 输入
输入 json val prparamas= CampaignSparkParameters( [{"category":"x","data":{"booster":"gbtree","tree_method":"hist","verbosity":"1","nthread": "cpuTask","num_workers":"35","early_stopping_rounds":"5","colsample_bytree":"0.9","subsample":"0.9","objective":"binary_logistic","eval_metric":"logloss ","lambda":"10.0","eta":"0.1","alpha":"1.0","gamma":"0.0","max_depth":"5","max_bin":"64", "num_round":"100","missing":"0","seed":"42L"}}, {"category":"y","data":{"booster":"gbtree","tree_method ":"hist","verbosity":"1","nthread":"cpuTask","num_workers":"35","early_stopping_rounds":"5","colsample_bytree":"0.9","subsample": "0.9","目标":"binary_logistic","eval_metric":"logloss","lambda":"10.0","eta":"0.1","alpha":"1.0","gamma":"0.0 ","max_depth":"5","max_bin":"64","num_round":"100","missing":"0","seed":"42L"}} ] )
调用函数val prparamas1 = prparamas.sparkParamsToMap(prparamas)
预期产出
如果 category = x 则应该映射和显示该数据。 请帮我修改上面的代码。
目前我收到错误
:5: 错误: 非法字符 '\ ' val prparamas= CampaignSparkParameters(
\
是一个不间断的空格字符,所以你的字符串中可能有一些你看不到的。 一个简单的替换可能会修复它:
json.replaceAll("\u00a0", " ")
或者简单地删除输入中看起来像空格的每个字符并替换为普通空格。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.