JSON-Map[String,JsObject] mit 2.0 Spielen?
Ich bin neu in beiden Spielen! & Scala, aber ich bin versucht zu machen, ein Dienst, Karte der JSON-Anfrage an einen Map[String,JsObject] (oder Map[String,JsValue], ich bin nicht sicher über den Unterschied), und dann eine Liste ausgeben Tasten rekursiv durch die Karte (vorzugsweise als ein Baum).
Aber ich habe start Probleme:
def genericJSONResponse = Action(parse.json) {
request => request.body
var keys = request.keys
Ok("OK")
}
Was ich erwarten würde, wurde hier für Schlüssel gefüllt werden mit den Tasten, die von der Anfrage, aber natürlich, es wird nicht kompiliert. Wie sollte ich Vorgehen, angesichts der Beschreibung oben?
Vielen Dank im Voraus für die Unterstützung aus einer Scala-noob 🙂
Nik
- Haben Sie beim Lesen dieses wiki? github.com/playframework/Play20/wiki/ScalaJsonRequests Sie haben die Karte der Schlüssel manuell oder über ein implizites Objekt ordnen Sie Sie auf ein Objekt. github.com/playframework/Play20/wiki/ScalaJsonGenerics
- Auch etwas zu Bedenken, ist mit änderbaren Werte/collections in scala ist nicht zu empfehlen - wie gesehen werden kann hier
Du musst angemeldet sein, um einen Kommentar abzugeben.
JsValue
ist die Basisklasse für alle JSON-Werte.JsObject
ist ein Subtyp desJsValue
(zusammen mitJsNull
,JsUndefined
,JsBoolean
,JsNumber
,JsString
, undJsArray
). Werfen Sie einen Blick auf JSON spec, wenn es unklar ist: http://json.org/Wenn Sie wissen, dass die JSON-im Körper Anfrage ist ein JSON-Objekt (im Gegensatz zu anderen Arten der oben genannten) können Sie die pattern-match:
fields.toMap
ist der Typ, den Sie wollte:Map[(String, JsValue)]
so können Siemap
odercollect
verarbeiten der Objekt-Schlüssel rekursiv. (By the way, können Siefields
direkt, da es einSeq[(String, JsValue)]
und unterstütztmap
undcollect
auch).