2017-04-11 2 views
-2

Immer noch ein Noob in Scala bin ich hier eine Wand schlagen. JSON Arrays in Arrays Parsing mit Scala und Lift

Mit Scala 2.12.1 und liftweb 3.0.1

Ich habe json Code wie

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

ich dies bis zu einem gewissen Fall zu analysieren versuchen clases mit den folgenden Zeilen

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

Ich weiß, dass ich in meinem Denken einige falsche Ausgänge nehme, aber ich finde keinen Weg, einen JSon effizient zu parsen.

Jede Hilfe, die mich in die richtige Richtung weist, wird sehr geschätzt.

[bearbeiten] Ich verstehe, dass ich hier meine Frage falsch gestellt habe. Das Problem war, dass ich Nil für meine Liste von Tracern bekommen habe. Bei weiteren Untersuchungen stellte ich fest, dass ich meine verschachtelte Klasse von Tracern auf die falsche Ebene der Hauptklasse gesetzt hatte. Die Antworten und Kommentare haben mich in die richtige Richtung gelenkt und deshalb neu abgestimmt und akzeptiert.

nicht sicher, warum ich den downvotes bekam aber ich denke, jemand des Ego einen Schub benötigt, indem ein Noob Niederschlagung ;-)

Danke für die Hilfe und die Antworten.

+1

Überprüfen Sie diesen Link - http://alvinalexander.com/scala/simple-scala-lift-json-example-lift-framework – royki

+1

https://coderwall.com/p/o--apg/easy-json- Un-Marshalling-in-Scala-mit-Jackson – royki

Antwort

1

Ich bin mir nicht sicher, was nicht für Sie arbeitet. Könnten Sie mehr Informationen bereitstellen?

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] 

Der obige Code funktioniert gut für mich.