2014-04-24 14 views
5

Sieht so aus, als ob Play Json Library Scala Collections nicht serialisieren kann. Gibt es eine Alternative? Ich muss nur die Daten von einer Karte ausgeben.Wie scala Karte zu Json in PlayFramework zu serialisieren?

import scala.concurrent._ 
import play.api.libs.ws._ 
import scala.concurrent.ExecutionContext.Implicits.global 
import play.libs.Json 

object temp { 

     // Correct Serialization 
     val javaMap = new java.util.HashMap[String, String]() 

     javaMap.put("Abc", "Def") 

     // Outputs: res1: String = {"Abc":"Def"} 
     Json.stringify(Json.toJson(javaMap)) 


     // Incorrect Serialization 
     val scalaMap = Map("Abc" -> "Def")   //> scalaMap : scala.collection.immutable.Map[String,String] = Map(Abc -> Def) 

     // Output: res2: String = {"empty":false,"traversableAgain":true} 
     Json.stringify(Json.toJson(scalaMap))  //> res2: String = {"empty":false,"traversableAgain":true} 

    } 
+1

Ihr Beispielcode ergibt keinen Sinn. Play-Json kann Java-Sammlungen standardmäßig nicht behandeln und es hat kein Problem, eine 'scala.collection.immutable.Map [String, String]' zu behandeln. Ist das alles dein Code? – Ryan

+0

Was ich sage, ist völlig entgegengesetzt. Java-Sammlung wird korrekt behandelt. Überprüfen Sie den Ausgang auf repl. – nishnet2002

Antwort

9

Sie importieren die falsche JSON-Bibliothek.

import play.api.libs.json._

+0

Super danke. Es ist etwas verwirrend, welche zu verwenden. – nishnet2002

+0

Awesome Dank, Es spart eine Menge Stunden für mich ... Sehr hässliche Probleme .... – funny337

+0

Siehe https://www.playframework.com/documentation/2.5.x/ScalaJson#Using-Writes-converter "Verwenden von Schreibt Konverter Die Umwandlung von Scala nach JsValue erfolgt mit der Hilfsmethode Json.toJson [T] (T) (implizite Schreibvorgänge: Schreibt [T].) Diese Funktionalität hängt von einem Konverter vom Typ Writes [T] ab, der ein T in ein konvertieren kann JsValue. " –

Verwandte Themen