我想在Play2中将Scala对象列表反序列化为JSON映射-我说这是JSON的一个非常简单的用例。我的JSON输出如下所示:
{ "users": [ { "name": "Example 1", "age": 20 }, { "name": "Example 2", "age": 42 } ] }
为此,我正在看Play2的JSON文档 “ The Play JSON library” 。对我来说,他们的例子非常琐碎,我已经证实它们对我有用。因此,我能够User正确地反序列化单个对象。
User
但是,当我阅读文档时,在Play2中制作包含JSON列表的映射似乎有些冗长。有什么我不喜欢的东西吗?
这基本上是我简单的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像Play文档建议的那样,我如何以一种更通用的方式将上述列表的内容转换为JSON中的哈希值?
userList
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}]}