2017-04-11 18 views
-2

まだスカラのnoobであり、ここで壁に当たっています。私はいくつかのケースにこれを解析しようとしています、私はスカンタとリフトで解析された配列のjson配列

{ 
    "traces":[ 
     [ 
     { 
      "matcher":"Matcher1", 
      "score":{ 
       "assigned":50, 
       "max":50 
      } 
     }, 
     { 
      "matcher":"Matcher2", 
      "score":{ 
       "assigned":50, 
       "max":50 
      } 
     }, 
     { 
      "matcher":"Matcher3", 
      "score":{ 
       "assigned":50, 
       "max":50 
      } 
     } 
     ], 
     [ 
     { 
      "matcher":"Matcher4", 
      "score":{ 
       "assigned":50, 
       "max":50 
      } 
     }, 
     { 
      "matcher":"Matcher5", 
      "score":{ 
       "assigned":50, 
       "max":50 
      } 
     }, 
     { 
      "matcher":"Matcher6", 
      "score":{ 
       "assigned":50, 
       "max":50 
      } 
     } 
     ] 
    ] 
} 

のようなJSONコードを持っているのScala 2.12.1とliftweb 3.0.1

を使用して

は、次の行

case class Traces (traces: List[List[Trace]]) 
case class Trace (matcher: String, score: Score) 
val result = parse(json).extract[Traces] 
でclases

私は思考の中でいくつかの間違った出口を取っているのを知っていますが、このようなjsonを構文解析する方法を見つけることができないようです。

正しい方向に私を指摘する助けがあれば幸いです。

[編集] 私はここで間違った質問をしたことが分かりました。問題は私がトレーラーの私のリストのためにNilを得たことだった。さらに調査したところ、私は入れ子のクラスのトレーサをメインクラスの間違ったレベルに置いたことがわかりました。回答とコメントは、正しい方向に私を置いたので、upvotedと受け入れた。

ない私はdownvotesを得たが、私は、誰かのエゴが;-)

助けてくれてありがとうと回答をnoobのを下に置くことによって、ブーストを必要と推測する理由を確認してください。

+1

このリンクをチェック - http://alvinalexander.com/scala/simple-scala-lift-json-example-lift-framework – royki

+1

https://coderwall.com/p/o--apg/easy-json-スカラ・ジャクソン – royki

答えて

1

私はあなたのために働いていないか分かりません。もっと情報を提供できますか?

val json = 
    """ 
     |{ 
     |  "traces": 
     |  [[ 
     |  {"matcher": "Matcher1","score": {"assigned": 50,"max": 50}}, 
     |  {"matcher": "Matcher2","score": {"assigned": 50,"max": 50}}, 
     |  {"matcher": "Matcher3","score": {"assigned": 50,"max": 50}} 
     |  ], 
     |  [ 
     |  {"matcher": "Matcher4","score": {"assigned": 50,"max": 50}}, 
     |  {"matcher": "Matcher5","score": {"assigned": 50,"max": 50}}, 
     |  {"matcher": "Matcher6","score": {"assigned": 50,"max": 50}} 
     |  ]] 
     | } 
    """.stripMargin 

    import net.liftweb.json._ 

    implicit val formats = DefaultFormats 


    case class Traces (traces: List[List[Trace]]) 
    case class Trace (matcher: String, score: Score) 
    case class Score(assigned: Int, max: Int) 
    val result = parse(json).extract[Traces] 

上記のコードは問題なく機能します。