2016-07-30 8 views
0

Ich habe folgendes Json:Trans original Json mit Wiedergabe-Framework in Scala

{"id": 1, 
"url":[ 
    {"format":""}, 
    {"creator":""}, 
    {"value":"http://..."} 
] 
} 

Wie kann ich es in "url": "http://..." verwandeln.

Wie kann ich das tun? Ich habe Folgendes versucht, aber es scheint nicht zu funktionieren.

(json \ "value").as[JsString].value

+2

Ihre Frage ist unklar, weil Sie eine einzelne URL auf der Ausgabe erwarten, während Ihre Eingabe JSON eine Reihe von URLs enthält. Was versuchst du wirklich hier zu erreichen? Ein einzelnes (url, urlValue) Paar (in diesem Fall ist Ihr json ungültig) oder eine "Liste" von Paaren (in diesem Fall ist Ihre Erwartung ungültig)? –

Antwort

0

Da „url“ ein Array-Wert hat, den Sie indizieren müssen sie entsprechend den Wert, den Sie benötigen zu bekommen, also in Ihrem Fall wäre es so etwas wie:

scala> val url = (json \ "url")(2).get 
url: play.api.libs.json.JsValue = {"value":"http://..."} 

scala> (url \ "value").as[String] 
res22: String = http://... 

ich auch empfehlen, sich Argonaut anzuschauen, wenn Sie mit einem funktionelleren Ansatz für den Umgang mit JSON vertraut sind. Es ist den JSON-Funktionen von Play weit überlegen.