2014-08-23 3 views
0

내가 구글 길 찾기 API에서 JSON을 잡하고있어 요청이 여기에 그림과 같다 (길 찾기 응답에서 -> JSON 출력) link자바에서 이름으로 json 배열에서 json 객체를 추출하는 방법은 무엇입니까?

나는 JSON 내에서 특정 항목을 추출하는 방법을 모른다 정렬. 기본적으로 JSONObject 메서드 인 get (String key)에 상응하는 JsonArray에 해당하는 엔트리를 특정 키에 매핑 할 수 있습니다. 그러나 JSONArray에는 이러한 메소드가 없으며 특정 인덱스를 통한 정보 검색 만 지원하는 것으로 보입니다. 이것은 모두 훌륭하지만 좋지만 google 방향 reponses의 내용은 다양 할 수 있습니다. 따라서 특정 키 - 값 쌍을 찾거나 전체 배열을 반복하고 키 값을 확인할 수있는 방법이 필요합니다. JSONObject가 매핑 된 키를 결정하는 방법을 찾을 수도 있습니다. 어떤 제안? 예 : JSONArray 레그에서 거리 JSONObject를 추출하는 방법은 무엇입니까?

편집 : 여기가 붙어 있습니다 : JSON 예제 출력을 참조하십시오. here ... "routes"json 배열 내에서 "overview_polyline"항목의 값을 가져 오려고합니다. "overview_polyline"엔트리를 단순히 이름을 참조하여 액세스 할 수 없으므로 해당 엔트리에 도달 할 때까지 배열을 반복해야합니다. 하지만 내가 그 입장에 언제 도착했는지 어떻게 알 수 있니? 예, 엔트리의 JSONObject 표현에 "points"키가 있는지 확인할 수 있지만 반드시 "overview_polyline"항목에만 해당되는 것은 아닙니다. 또한 배열에 반환되는 항목 수가 다를 수 있으므로 단순히 (array.length() - n) 항목을 가져올 수 없습니다. 즉, 각 JSONObject의 이름 ("overview_polyline")을 확인하여 정보를 확실하게 추출 할 수있는 방법이 필요합니다. 당신이 이런 식으로 할 필요가 있으므로

  JSONArray routesArray = resultObj.getJSONArray("routes"); 

      for(int i = 0; i < routesArray.length(); i++) 
      { 
       JSONObject obj = routesArray.optJSONObject(i); 
       if(obj != null) 
       { 
        //How do I determine if this object is the "overview_polyline" 
        //object? 
       } 
      } 
+0

JSONArray는 배열을, 어떤 키 (만 인덱스)가없는 –

+0

좋아 - 감사합니다 -하지만 어레이의 이름은 알지만 인덱스가 변경되면 배열의 특정 요소를 어떻게 찾을 수 있습니까? – bw15

+0

요소의 이름이 있다면 요소 자체입니다! 실제 예제를 붙여 넣으십시오. –

답변

1

route는, JSONObjectJSONArray입니다 :

JSONArray routesArray = resultObj.getJSONArray("routes"); 
for(int i = 0; i < routesArray.length(); i++) { 
    JSONObject obj = routesArray.optJSONObject(i); 
    if(obj != null) { 
     JSONObject polyline = obj.optJSONObject("overview_polyline"); 
    } 
} 
+0

오, 정말 고마워요. 아주. overview_polyline이 JSONObject 내에 있다는 것을 잊었습니다. JSONArray에 있다고 가정합니다. 비록 내가 추측했다해도 그것은 발견하기가 불가능했을 것입니다. JSONArrays는 같은 유형의 JSONObjects (또는 다른 JSONArray) 만 포함해야하므로 특정 하나를 선택하지 않아도됩니다. – bw15

관련 문제