Scala 播放:如何将列表附加到现有JSON变量?
给定以下json变量Scala 播放:如何将列表附加到现有JSON变量?,scala,playframework,playframework-2.0,Scala,Playframework,Playframework 2.0,给定以下json变量 var json: JsValue = JsObject(Seq( "retcode" -> JsString("1") )) 下面为用户类写入对象 implicit val w2 : Writes[User] = ( (JsPath \ "id").write[Int] and (JsPath \ "userid").write[String] and (JsPath \ "name").write[S
var json: JsValue = JsObject(Seq(
"retcode" -> JsString("1")
))
下面为用户
类写入对象
implicit val w2 : Writes[User] = (
(JsPath \ "id").write[Int] and
(JsPath \ "userid").write[String] and
(JsPath \ "name").write[String]
) (unlift(User.unapply))
假设我有一个用户列表
var list : List[User] = ( some list )
如何将列表附加到初始的
json
var?假设您希望以类似的方式结束(用户列表作为原始对象的另一个键/值添加):
你可以做:
val newJson = json.as[JsObject] + ("users" -> Json.toJson(list))
如果首先声明
json
为JsObject
,而不是JsValue
,则可以跳过.as[JsObject]
。(如果您不知道JSON确切地表示一个对象,而不是一个列表或原语,作为
可能是不安全的。有关更好的处理方法,请参阅。)假设您希望得到类似的结果(用户列表作为原始对象的另一个键/值添加):
你可以做:
val newJson = json.as[JsObject] + ("users" -> Json.toJson(list))
如果首先声明
json
为JsObject
,而不是JsValue
,则可以跳过.as[JsObject]
。(如果您不知道您的JSON明确表示一个对象,而不是一个列表或原语,as
可能是不安全的。有关更好的处理方法,请参阅。)假设我们需要向现有的JSON添加/附加JSON。考虑
userAddressList = Users multiple address list.
现在,您希望将上述两个信息附加到单个json对象中:val res = JsObject(Seq(
("userAddresses", Json.toJson(userAddressList)),
("userDetails", Json.toJson(userService.getUserDtlsByID(userId)))
))
它将产生如下结果:{
"userAddresses" :[{"addId":"001"},{"addId":"002"}],
"userDetails":{"id":"001", "name":"MAC", "designation":"Manager"}
}
我希望这能奏效;-) 假设我们需要向现有的json添加/附加json。
考虑
userAddressList = Users multiple address list.
现在,您希望将上述两个信息附加到单个json对象中:val res = JsObject(Seq(
("userAddresses", Json.toJson(userAddressList)),
("userDetails", Json.toJson(userService.getUserDtlsByID(userId)))
))
它将产生如下结果:{
"userAddresses" :[{"addId":"001"},{"addId":"002"}],
"userDetails":{"id":"001", "name":"MAC", "designation":"Manager"}
}
我希望这能奏效;-)
JsObject
提供了一个+(名称,jsValue)
操作(但要小心,因为使用var
已经“不起作用”)。JsObject
提供了一个+(名称,jsValue)
操作(但要小心,因为使用var
已经“不起作用”)。