从Json提取地图,将所有数字解释为BigInt

时间:2018-11-14 09:34:33

标签: json scala json4s

我从json中提取了一张地图。到目前为止,该方法有效。正如我在解析json中的哪些字段之前不知道的那样,我一直在使用Map[String, Any]。每个仅由数字组成的字段都被解释为BigInt,我不希望这样做。

MyCode:

    implicit val formats: DefaultFormats.type = org.json4s.DefaultFormats
    json.extract[Map[String, Any]]

有什么方法可以隐式地将数字解释为IntLong

1 个答案:

答案 0 :(得分:1)

您尚未指定如何创建bar值。如果您从foo解析它,那么foo/bar/baz标志就能解决问题:

json

输出:

String

如果您以编程方式构造json值,则直接在useBigIntForLongimport 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

Example source code