2017-03-21 4 views
0

Ich verwende Play-Framework zu konvertieren und ich versuche, ein Scala Objekt in einer JSON-Zeichenfolge zu konvertieren.Nicht in der Lage Scala Objekt JSON String

Hier ist mein Code, wo ich mein Objekt erhalten:

val profile: Future[List[Profile]] = profiledao.getprofile(profileId); 

Das Objekt befindet sich nun im profile Wert.

Jetzt möchte ich das profile Objekt konvertieren, das ein Future[List[Profile]] zu JSON-Daten ist und dann diese Daten in eine JSON-Zeichenfolge konvertieren und dann in eine Datei schreiben. Hier

ist der Code, den ich bisher geschrieben:

val jsondata = Json.toJson(profile) 
Jackson.toJsonString(jsondata) 

Dies ist, wie ich in JSON-Daten zu konvertieren bin versucht, aber es gibt mir die folgende Ausgabe:

{"empty":false,"traversableAgain":true} 

Ich bin Verwenden Sie die Bibliothek Jackson, um die Konvertierung durchzuführen.

Kann jemand mir dabei helfen?

+0

Welche Art von 'Objekt' ist Ihr' Profil' Wert? – meucaa

+0

@meucaa dieser Funktion profiledao.getprofile (der Profil) liefert Zukunft [Liste [Profil]] – raja

Antwort

2

Warum bei Jackson die Mühe machen? Wenn Sie Wiedergabe verwenden, haben Sie play-json zur Verfügung, die Jackson unter der Haube FWIW verwendet:

Zuerst müssen Sie eine implizite Readsplay-json zu informieren, wie Profile serialisiert. Wenn Profile ein Fall-Klasse ist, können Sie dies tun:

import play.api.libs.json._ 

implicit val profileFormat = Json.format[Profile] 

Wenn nicht, definieren Sie Ihre eigene Reads wie this.

Dann seit getprofile (die Konvention folgen sollte und sein getProfile) Future[List[Profile]] zurückgibt, können Sie dies tun, ein JsValue zu bekommen:

val profilesJson = profiledao.getprofile(profileId).map(toJson) 

(profiledao auch profileDao sein sollte.)

Am Ende , können Sie dies in eine Result wie Ok wickeln und diese von Ihrem Controller zurückgeben.

+0

Ich habe eine implizite liest das ist Recht, die JSON-Daten Rückkehr zurück? aber wie man in die JSON-Zeichenkette konvertiert – raja

+1

Das 'Liest' produziert JSON nicht. Es ist eine Funktion, die ein Scala-Objekt in einen 'JsValue' konvertiert. Sobald diese Funktion angewendet wurde, können Sie 'Json.stringify' verwenden, um' JsValue' in einen String zu konvertieren. – Vidya

+0

Ich denke, dass die importierenden Bibliotheken eine wichtige Rolle spielen, denn warum ich den Import für den Json geändert habe, dann hat es angefangen, gut zu funktionieren. Danke für alles. – raja

Verwandte Themen