Scala - 解析嵌套的json数组

时间:2016-03-20 17:29:29

标签: arrays json scala

我有一个像下面这样的json字符串,请建议我的代码应该做些什么更改才能将这个json解析成Scala中的case类?

    {
        "boundaries": [
          [
            [
              -11110372.022426892,
              4676428.402837045
            ],
            [
              -11124418.538414171,
              4740594.245854561
            ],
            [
              -11101812.444140816,
              4744556.315065523
            ],
            [
              -11087326.99540134,
              4684866.726958438
            ],
            [
              -11108506.41908069,
              4677271.949698344
            ],
            [
              -11110152.500391051,
              4676569.01290604
            ],
            [
              -11110372.022426892,
              4676428.402837045
            ]
          ]
        ]
      }

我已尝试过以下代码,但它无效

import org.json4s._
import org.json4s.JsonDSL._
import org.json4s.JsonAST._
import org.json4s.jackson.JsonMethods._

val jsonString = """<the string given above>"""
val jsonAst: JValue = parse(jsonString)

case class Boundaries(r : Array[Array[Array[Array[Double]]]])

如何将此case类与json字符串相关联并获取此类中的所有数值?

1 个答案:

答案 0 :(得分:2)

这对我有用:

import org.json4s.jackson.JsonMethods._
import org.json4s._
import org.json4s.JsonDSL._
import org.json4s.JsonAST._
import org.json4s.jackson.JsonMethods._

implicit val formats = DefaultFormats

case class Boundaries (boundaries: List[List[List[Double]]])

val jsonString = """
 <your json>
"""

scala> val jsonAst: JValue = parse(jsonString)
jsonAst: org.json4s.JsonAST.JValue = <parsed JValue>

scala> jsonAst.extract[Boundaries]
res0: Boundaries = Boundaries(List(List(List(-1.1110372022426892E7, 4676428.402837045), List(-1.1124418538414171E7, 4740594.245854561), List(-1.1101812444140816E7, 4744556.315065523), List(-1.108732699540134E7, 4684866.726958438), List(-1.110850641908069E7, 4677271.949698344), List(-1.1110152500391051E7, 4676569.01290604), List(-1.1110372022426892E7, 4676428.402837045))))