我从json中提取了一张地图。到目前为止,该方法有效。正如我在解析json中的哪些字段之前不知道的那样,我一直在使用Map[String, Any]
。每个仅由数字组成的字段都被解释为BigInt
,我不希望这样做。
MyCode:
implicit val formats: DefaultFormats.type = org.json4s.DefaultFormats
json.extract[Map[String, Any]]
有什么方法可以隐式地将数字解释为Int
或Long
?
答案 0 :(得分:1)
您尚未指定如何创建bar
值。如果您从foo
解析它,那么foo/bar/baz
标志就能解决问题:
json
输出:
String
如果您以编程方式构造json值,则直接在useBigIntForLong
和import org.json4s.DefaultFormats
import org.json4s.JsonAST._
import org.json4s.native.JsonMethods
object Main {
def main(args: Array[String]): Unit = {
implicit val formats: DefaultFormats = DefaultFormats
val parsedJson = JsonMethods.parse(""" { "a" : 42} """, useBigIntForLong = false)
parsedJson.extract[Map[String, Any]].foreach {
case (name, value) => println(s"$name = $value (${value.getClass})")
}
}
}
之间进行选择:
a = 42 (class java.lang.Long)
输出:
BigInt