writes read play framework json scala playframework playframework-2.0

read - ¿Cómo convertir POJO a JSON en Play Framework 2.3.x(Scala)?



read json play framework (2)

¿Alguien puede mostrarme cómo convertir POJO o instancia de clase a JSON en Play framework (especialmente Play v2.3.x) con Scala?

Por ejemplo, tengo un código como este:

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 } }

El mensaje de error:

No se puede escribir una instancia de com.fasterxml.jackson.data bind.JsonNode en la respuesta HTTP. Intenta definir un Writeable [com.fasterxml.jackson.databind.JsonNode]

ACTUALIZACIÓN: descubrí que el error anterior es causado por la importación incorrecta de la clase Json , debe ser: import play.api.libs.json.Json . Sin embargo, todavía tengo error en el problema implícito a continuación.

He leído este tutorial , pero cuando probé el código implícito Writes[Foo] :

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

Can''t resolve symbol unlift No se Can''t resolve symbol and Can''t resolve symbol unlift error de Can''t resolve symbol unlift en Intellij. Además, el código del tutorial parece complejo solo para la conversión de un objeto a JSON. Me pregunto si hay una forma más simple de hacer esto.


Puede obtener una instancia de Writes[Foo] utilizando Json.writes :

implicit val fooWrites = Json.writes[Foo]

Tener este alcance implícito es todo lo que necesita para convertir Foo a JSON. Consulte la documentación aquí y aquí para obtener más información sobre las lecturas / escrituras JSON.


El segundo problema - Can''t resolve symbol and - es un error Intellij introducido en la versión 1.3 del complemento Scala. En la versión 1.3.3 del complemento Scala, ahora hay una solución alternativa: establecer la casilla de preferencias:

Idiomas y marcos> Scala> pestaña Núcleo (predeterminado)> Usar viejo algoritmo de búsqueda implícita