鉴于以下json:
{
"status": "ok",
"user": {
"id": 39216,
"first_name": "naghmeh",
"username": "test",
}
}
我想将新项目附加到用户JSON变量。并创建一个新的json,如:
{
"status": "ok",
"user": {
"id": 39216,
"first_name": "naghmeh",
"username": "test",
"point":10
}
}
答案 0 :(得分:1)
假设您的问号标签表明您正在使用PlayJSON库,您只需使用+
:
val json: JsObject = ... // Your initial value here
val newField: JsValue = ... // Your new value here
val jsonWithAdditionalField = json + ("yourKey" -> newField)
有关如何创建JsValue
的详细信息,请查看official documentation
答案 1 :(得分:1)
您可以使用Play Json API实现此目的。
首先,您需要将json字符串解析为Play JsValue
,
import play.api.libs.json._
val jsonString =
"""
|{
| "status": "ok",
| "user": {
| "id": 39216,
| "first_name": "naghmeh",
| "username": "test"
| }
|}
""".stripMargin
val jsValue = Json.parse(jsonString)
现在,您可以通过遍历Json然后修改它来将值添加到JsValue。
val result = jsValue match {
case jsObject: JsObject => (jsObject \ "user").as[JsObject] match {
case userJsObject: JsObject => jsObject ++ Json.obj(
"user" -> (userJsObject ++ Json.obj(
"point" -> 10
))
)
case _ => jsValue
}
case _ => jsValue
}
或者,使用Play Json的JsonTransformer API,
val jsonTransformer = (__ \ "user").json.update(
__.read[JsObject].map(jsObject => jsObject ++ Json.obj("point" -> 10))
)
val result2 = jsValue.transform(jsonTransformer) match {
case JsSuccess(jsObject, _) => jsObject
case _ => jsValue
}
答案 2 :(得分:-1)
将列表附加到变量,然后像这样调用put:
list.put("test");