2016-03-20 13 views
0

私は以下のようなjson文字列を持っています。このjsonをScalaのcaseクラスに解析するために私のコードにどのような変更を加えるべきかをお勧めしますか?Scala - ネストされたjson配列の解析

{ 
     "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 
      ] 
      ] 
     ] 
     } 

私は以下のコードを試してみましたが、それはJSON文字列に、このケースクラスを関連付けると、このクラスのすべての数値を取得する方法


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]]]]) 

仕事doesntの?

答えて

1

これが私の仕事:

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)))) 
+0

あなたは最後のステップの後に、すべての数値を抽出する方法をアドバイスしていただけますか?たとえば、私はval b =(jsonAst).extract [Boundaries]を実行し、bを使って数値を抽出する方法を教えてください。 – Phani

+0

あなたは要素のリストでそれを行うのと同じように?また、それは最終的にこのオブジェクトで何をするつもりかによって異なります。 – Ashalynd