2010-12-13 5 views
3

안녕하세요, JsonObject에서 요소의 값을 가져 오려고합니다. 나는 Gson 라이브러리와 함께 java를 사용하고 있습니다.Json에서 요소의 값을 얻으려고하면 null이 반환됩니다.

"status": "OK", "routes": [ { 
    "summary": "Mehwar Al Moneeb", 
    "legs": [ { 
     "steps": [ { 
     "travel_mode": "DRIVING", 
     "start_location": { 
      "lat": 30.0655100, 
      "lng": 31.2096600 
     }, 
     "end_location": { 
      "lat": 30.0654400, 
      "lng": 31.2096000 
     }, 
     "polyline": { 
      "points": "mdovDksn}DLJ", 
      "levels": "BB" 
     }, 
     "duration": { 
      "value": 1, 
      "text": "1 min" 
     }, 
     "html_instructions": "Head \u003cb\u003esouthwest\u003c/b\u003e on \u003cb\u003eOmar Toson\u003c/b\u003e toward \u003cb\u003eMohammed Roshdi\u003c/b\u003e", 
     "distance": { 
      "value": 9, 
      "text": "9 m" 
     } 
     } 

나는 최상위 요소 "경로"의 벌금을 얻고 그것을 인쇄 표시 : 여기

String s = "http://maps.googleapis.com/maps/api/directions/json?origin=30.065634,31.209473&destination=29.984177,31.440052&sensor=false"; 
URL url = new URL(s); 

BufferedReader r = new BufferedReader(new InputStreamReader(
    ((HttpURLConnection) url.openConnection()).getInputStream())); 

JsonStreamParser jsp = new JsonStreamParser(r); 

JsonParser jp = new JsonParser(); 

JsonElement jsonElement = jp.parse(r); 

JsonObject jsonObject = jsonElement.getAsJsonObject(); 

System.out.println(jsonObject.get("summary")); 

은 JSON의 일부입니다 : 여기

코드의 관련 부분입니다 요소의 내부에는 무엇을 넣었지만, 예를 들어 "summary"요소를 표시하려고하면 반환 값은 null입니다. 출력에 whats가 표시되므로 결과적으로 그 값을 얻을 수 없습니다. 뭐가 잘못 되었나요? 어떤 JsonElement의 가치를 얻을 수 있습니까? 최대한 빨리 회신 해주십시오. 미리 감사드립니다.

답변

0

경로는 자바 스크립트 배열입니다. 요약은 해당 배열의 첫 번째 객체의 속성이므로 jsonObject.getAsJsonArray("routes").get(0).get("summary"); 또는 이와 동등한 것을 사용해야합니다. Java 라이브러리로 작업하지는 않았지만 JS 코드는 jsonObject.routes[0].summary

편집 : 코드 : GSON Documentation으로 업데이트되었습니다.

+0

답장을 보내 주셔서 감사합니다. 당신은 먼저 json 파일의 jsonObject를 얻은 다음 맨 위 요소를 배열로 가져오고 내부의 요소를 얻으려면 먼저 Json 객체로 가져와야합니다. 그러면 요소 이름을 제공하여 배열로 가져와야합니다. ... – Muaz

+0

오른쪽. 코드가 위에 업데이트되었습니다. –