2014-03-02 4 views
-1

재생 응용 프로그램에서 json 응답을 구문 분석하고 목록의 모든 필드/값을 가져와야합니다.재생 라이브러리를 사용하여 json 응답 구문 분석

나는 아래와 같은 응답을 받고 있어요 : 나는이 "결과"목록에서 모든 feilds/값을 얻을 필요가

{"results":{"key1":value1,"key2":value2,"key3":value3},"errorMessage":"","statusCode":2000,"success":true,"version":"1.01"} 

:

WSRequestHolder request = WS.url("someurl"); 
request.setQueryParameter("somekey", "somevalue"); 
Promise<Response> promise = request.get(); 
Response response = promise.get(); 
JsonNode json = response.asJson(); 

응답은 아래와 같이 제공됩니다. play json 라이브러리/api를 사용하여 이것을 어떻게 할 수 있습니까? 나는 2.1.1을 사용하고있다.

감사합니다.

+1

합니다. playframework.com/documentation/2.2.x/JavaJsonRequests –

답변

0

결과가 JsonNode이므로 JsonNode의 모든 세부 정보를 사용할 수 있습니다. 예를 들어

, 당신은 "results" 액세스하려는 경우는, 수행

JsonNode results = json.get("results"); 

또한 하나 JsonNodenull을 포함한 모든 JSON 값을 나타낼 수 등 등 등 .has(), .path(), .entries(), 같은 방법이있다. .isObject().isNumber().isMissing() (참고 : 후자는 대신 .get().path()의 사용을 필요로)

당신이 .is*() 방법을 사용할 수 있습니다 유형을 테스트합니다.

예 :

json.path("foo").isMissing(); // true 
json.path("errorMessage").getTextValue(); // "" 
json.get("results").get("key2"); // value2 
json.get("success").getBooleanValue(); // true 

는 기타 등 the javadoc for JsonNode를 참조하십시오.

또 다른 해결책은 JSON을 POJO로 deserialize하는 것입니다. 하지만 POJO를 처음 만들면 ObjectMapper ~ .read*() 값을 사용하는 것입니다.

(측면 참고 : 재생이 2.0 이상은 ... 몇 년 동안 사용할 수있다 반면 잭슨 1.9.x 사용하는 놀라운 일이다) : 에 http : // www가를 공식 문서가이 작업을 수행하는 방법에 대해 설명합니다