/ / Wie konvertiere ich POJO in JSON in Play Framework 2.3.x (Scala)? - json, scala, playframework, playframework-2.0

Wie konvertiert man POJO zu JSON im Play Framework 2.3.x (Scala)? - json, scala, playframework, playframework-2.0

Kann mir jeder zeigen, wie man mit Scala POJO oder Klasseninstanz in JSON im Play-Framework (insbesondere Play v2.3.x) konvertiert?

Zum Beispiel habe ich folgenden Code:

case class Foo(name: String, address: String)

def index = Action {
request => {
val foo = Foo("John Derp", "Jem Street 21")  // I want to convert this object to JSON
Ok(Json.toJson(foo))    // I got error at here
}
}

Die Fehlermeldung:

Es kann keine Instanz von com.fasterxml.jackson.data bind.JsonNode geschrieben werden auf HTTP Antwort. Versuchen Sie, eine zu definieren Beschreibbar [com.fasterxml.jackson.databind.JsonNode]

AKTUALISIEREN: Ich habe herausgefunden, dass der obige Fehler durch einen falschen Import der verursacht wurde Json Klasse sollte es sein: import play.api.libs.json.Json. Ich habe jedoch immer noch Fehler beim impliziten Problem erhalten.

ich habe gelesen dieses Tutorialaber als ich das implizit ausprobiert habe Writes[Foo] Code:

  implicit val fooWrites: Writes[Foo] = (
(JsPath  "name").write[String] and
(JsPath  "address").write[String]
)(unlift(Foo.unapply))

ich habe Can"t resolve symbol and und Can"t resolve symbol unlift Fehler in Intellij. Auch der Code des Tutorials sieht komplex aus, nur wenn ein Objekt in JSON konvertiert wird.

Antworten:

7 für die Antwort № 1

Sie können eine bekommen Writes[Foo] Beispiel mit Json.writes:

implicit val fooWrites = Json.writes[Foo]

Wenn Sie dieses implizit im Gültigkeitsbereich haben, müssen Sie nur konvertieren Foo zu JSON. Siehe die Dokumentation Hier und Hier Weitere Informationen zu JSON-Lese- / Schreibvorgängen.


1 für die Antwort № 2

Das zweite Problem - Can"t resolve symbol and - ist ein Intellij-Fehler eingeführt in Version 1.3 des Scala-Plugins. In Version 1.3.3 des Scala-Plugins gibt es jetzt ein Kontrollkästchen für die Umgehung von Einstellungen:

Sprachen und Frameworks> Scala> Core (Standard)> Alt verwenden impliziter Suchalgorithmus