Estoy tratando de deserializar una lista de Scala objetos JSON mapa en Play2 – una bastante trivial caso de uso con JSON, diría yo. Mi salida JSON, sería algo a lo largo de las líneas de:

{
    "users": [
        {
            "name": "Example 1",
            "age": 20
        },
        {
            "name": "Example 2",
            "age": 42
        }
    ]
}

Para lograr esto estoy buscando en la Play2 del JSON documentación titulada «El Juego JSON biblioteca». A mí sus ejemplos son bastante triviales, y he confirmado que trabajan para mí. Por lo tanto, soy capaz de deserializar un solo User objeto correctamente.

Pero la elaboración de un mapa que contiene una lista de JSON parece un poco detallado en Play2, cuando comencé a leer la documentación. Hay algo que no soy grokking?

Esto es, básicamente, mi simple Scala código:

case class User(name: String, age: Int)

object UserList {
  implicit val userFormat = Json.format[User]  

  val userList = List(User("Example 1", 20), User("Example 2", 42))
  val oneUser = Json.toJson(userList(0)) //Deserialize one Scala object properly to JSON.
  //JSON: { "user" : [ <-- put content of userList here. How?
  //                 ]
  //      }
}

Así que mi pregunta sería; ¿cómo puedo transformar el contenido de la userList Lista de arriba para un valor de hash en el JSON de un modo más genérico que explícitamente la escritura de cada elemento hash, como el Juego de la documentación sugiere?

No se que sería de serialización en lugar de deserializar? No están tratando de convertir su objeto JSON?
Gracias – fijo 🙂

OriginalEl autor Johan Paul | 2013-07-16

1 Comentario

  1. 37
    scala> import play.api.libs.json._
    import play.api.libs.json._
    
    scala> case class User(name: String, age: Int)
    defined class User
    
    scala> implicit val userFormat = Json.format[User]
    userFormat: play.api.libs.json.OFormat[User] = play.api.libs.json.OFormat$$anon$1@38d2c662
    
    scala> val userList = List(User("Example 1", 20), User("Example 2", 42))
    userList: List[User] = List(User(Example 1,20), User(Example 2,42))
    
    scala> val users = Json.obj("users" -> userList)
    users: play.api.libs.json.JsObject = {"users":[{"name":"Example 1","age":20},{"name":"Example 2","age":42}]}
    Oh wow – que fue de simple!!! Tengo que leer la documentación de nuevo. Pregunto por qué esto no se ha dicho más claramente – o me lo perdí. Gracias!!
    Debo decir, que sólo mediante la lectura de los documentos en http://www.playframework.com sobre el Juego del soporte JSON, nunca me hubiera ocurrió con la forma de lograr lo que yo quería – y lo que pega. Los documentos parecen ser bastante basura.
    sí, en algún momento usted tiene que mirar en el método de firmas y leer el código fuente (para ver qué instancias de la Writes typeclass ya están definidos por el Juego, en este caso en particular).
    ¿Cómo importar todos los juego de frascos a la scala de consola? Traté de reproducir sus comandos, pero no puedo.
    Empecé la scala de consola desde el interior de un sbt sesión en un Juego de directorio del proyecto tuve localmente. He descrito una alternativa en esta entrada del blog igstan.ro/posts/…. Espero que ayude.

    OriginalEl autor Ionuț G. Stan

Dejar respuesta

Please enter your comment!
Please enter your name here