2017-12-26 24 views
-1

은 다음과 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 } }

답변

1

Play Json API를 사용하여이 작업을 수행 할 수 있습니다.

먼저 당신은 당신이 당신의 JsValue에 어느 JSON을 통과 한 다음 수정하여 값을 추가 할 수 있습니다, 지금, 당신의 JSON 문자열이 JsValue 플레이

import play.api.libs.json._ 

val jsonString = 
    """ 
    |{ 
    | "status": "ok", 
    | "user": { 
    |  "id": 39216, 
    |  "first_name": "naghmeh", 
    |  "username": "test" 
    | } 
    |} 
    """.stripMargin 

val jsValue = Json.parse(jsonString) 

을 구문 분석 할 필요가있다.

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 
} 

또는 재생 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 
} 
-1

그래서 같이 넣어 호출 후 변수에 목록을 추가하고 :

list.put("test"); 
1

당신이 PlayJSON 라이브러리를 사용하고 귀하의 질문에 태그에서 가정 할 때, 당신은 단순히 수 + 사용

val json: JsObject = ... // Your initial value here 
val newField: JsValue = ... // Your new value here 
val jsonWithAdditionalField = json + ("yourKey" -> newField) 

JsValue을 만드는 방법에 대한 자세한 내용은 걸릴 상기 official documentation

,691 봐
+0

영업 이익은'JsObject'에'JsValue'를 추가하는 방법을 요구하지 않았다. 그는 자신의 Json 문자열을 어떻게 JsObject로 파싱 할 수 있는지 알고 싶어합니다. 그러면 JsObject에 추가 할 수 있도록'JsValue'를 어떻게 만들 수 있을까요? –