2017-11-14 1 views
0

JSON을 많이 사용하지 않아서 Google Maps Distance Matrix API를 사용하여 일부 데이터를 생성하고 싶습니다.JSON 배열의 요소에 액세스하기

나는 기간에서 수 14,147을 끌어 싶습니다.

org.json.JSONException: JSONObject["duration"] not found 

I : 여기

String data = getOutputAsText(geoService); 
JSONObject json = new JSONObject(data); 
String duration = json.getJSONArray("rows").getString("duration"); 

콘솔 출력입니다 :

{ 
    "destination_addresses" : [ "Washington, DC, USA" ], 
    "origin_addresses" : [ "New York, NY, USA" ], 
    "rows" : [ 
     { 
     "elements" : [ 
      { 
       "distance" : { 
        "text" : "226 mi", 
        "value" : 364089 
       }, 
       "duration" : { 
        "text" : "3 hours 56 mins", 
        "value" : 14147 
       }, 
       "status" : "OK" 
      } 
     ] 
     } 
    ], 
    "status" : "OK" 
} 

나는 여기에 내가 (데이터가 위의 단지 배열) 마지막 시도 무엇, 몇 가지 다른 일을 시도했습니다 게시하기 전에 주위를 둘러 보았지만이 특별한 문제로 나를 도울 수 있었던 것을 발견하지 못했습니다.

기간에서 값을 내 웹 서비스로 전달하고 싶습니다. 그 값을 추출하는 방법을 모르겠습니다. 미리 감사드립니다.

+0

JSON에 저장된 데이터를 나타내는 클래스를 만든 다음 Jackson을 사용하여 JSON을 해당 클래스로 변환합니다. – DwB

+0

Json을 구문 분석하는 데 사용하는 라이브러리는 무엇입니까? –

+0

@DwB이 작은 json 스 니펫에 대한 Java 모델을 만들지 않겠습니다. ID는 "동적으로"구문 분석합니다. –

답변

0

우선, this 답변을 참조하십시오. org.json을 사용하면 할 수 있습니다.

JSONObject obj = new JSONObject("Content of your string here"); 
JSONArray rows = obj.getJSONArray("rows"); 
for (int i = 0; i < rows.length(); i++) { 
JSONArray elements = rows.getJSONObject(i).getJSONArray("elements"); 
    for(int j = 0; j < elements.length(); j++) { 
    JSONObject element = elements.getJSONObject(j); 
    JSONObject duration = element.getJSONObject("duration"); 
    int value = duration.getInt("value"); 
    } 
} 

위의 JSON 문자열을 사용하여 다음과 같은 출력을 생산하고있다 코드 : 14147

P.S. 같은 원하는 라이브러리를 사용할 수 있습니다. 여기에 사용 된 것은 시위를 목적으로 한 것입니다.

관련 문제