Сериализация списка Scala для JSON в Play2
Я пытаюсь десериализовать список объектов Scala на карту JSON в Play2 - довольно простой пример использования JSON, я бы сказал. Мой вывод JSON был бы чем-то вроде:
{
"users": [
{
"name": "Example 1",
"age": 20
},
{
"name": "Example 2",
"age": 42
}
]
}
Для этого я смотрю документацию Play2 JSON под названием "Библиотека воспроизведения JSON". Для меня их примеры довольно тривиальны, и я подтвердил, что они работают для меня. Следовательно, я могу десериализовать один объект User
правильно.
Но создание карты, содержащей список в JSON, кажется немного подробным в Play2, когда я читаю документацию. Есть ли что-то, чего я не грохочу?
Это в основном мой простой Scala код:
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?
// ]
// }
}
Итак, мой вопрос будет; как я могу преобразовать содержимое списка userList
выше в хэш в JSON более общим образом, чем явно выписывать каждый хеш-элемент, как предлагает документация Play?
Ответы
Ответ 1
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] = [email protected]
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}]}