播放:如何将列表附加到现有 JSON 变量?
Play: how to append a list to an existing JSON variable?
给定以下 json 变量
var json: JsValue = JsObject(Seq(
"retcode" -> JsString("1")
))
和以下 Writes 对象 User
class
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
变量?
假设您想以这样的方式结束(用户列表作为另一个 key/value 添加到您的原始对象):
{
"retcode" : "1",
"users" : [ {
"id" : "1",
"userid" : "u1",
"name" : "Bob"
}, {
"id" : "2",
"userid" : "u2",
"name" : "Fred"
} ]
}
你可以做到:
val newJson = json.as[JsObject] + ("users" -> Json.toJson(list))
如果您将 json
声明为 JsObject
而不是 JsValue
,则可以跳过 .as[JsObject]
。 (如果您不知道您的 JSON 绝对代表一个对象,而不是一个列表或基元,那么 as
可能是不安全的。请参阅 using validation 以获得更好的处理方法。 )
假设我们需要添加/附加 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 变量
var json: JsValue = JsObject(Seq(
"retcode" -> JsString("1")
))
和以下 Writes 对象 User
class
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
变量?
假设您想以这样的方式结束(用户列表作为另一个 key/value 添加到您的原始对象):
{
"retcode" : "1",
"users" : [ {
"id" : "1",
"userid" : "u1",
"name" : "Bob"
}, {
"id" : "2",
"userid" : "u2",
"name" : "Fred"
} ]
}
你可以做到:
val newJson = json.as[JsObject] + ("users" -> Json.toJson(list))
如果您将 json
声明为 JsObject
而不是 JsValue
,则可以跳过 .as[JsObject]
。 (如果您不知道您的 JSON 绝对代表一个对象,而不是一个列表或基元,那么 as
可能是不安全的。请参阅 using validation 以获得更好的处理方法。 )
假设我们需要添加/附加 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"}
}
我希望这会奏效 ;-)