我有随机的JSON字符串,当它们确实是数字时包含字符串值,但我无法知道进入我的系统时它们可能是哪些字段。
例如:
{
"some_key":"1234",
"another_key":{
"sub_key":"4243",
"a_string":"this is a valid string and should not be converted"
}
}
有没有人知道使用json4s尝试将json值转换为整数的简单方法?
答案 0 :(得分:2)
想出来。这段代码正是我需要的:
private def convertNumbers(json: JValue) =
json.transformField {
case JField(k, v) ⇒ k → (v match {
case s: JString ⇒ Try(JInt(s.s.toInt)).getOrElse(s)
case o ⇒ o
})
}
答案 1 :(得分:1)
不幸的是,因为这些键被编码为字符串,所以您需要转换它们。所以,你可以这样做:
val json = parse("""{some_key":"1234"}""")
Try((json \ "some_key").values.toString.toInt) match {
case Success(i) => JInt(i)
case Failure(i) => s
}
如果它可以转换为Int,则返回JInt
,否则返回JString