2017-12-05 4 views
0

는 :Java의 GoogleDistanceMatrix API에서받은 JSON에서 중첩 값을 추출하는 방법은 무엇입니까? 자바 사용 가능한 코드에 다음 JSON의 수익을 분석하려고

{ 
    "destination_addresses" : [ "New York, NY, USA" ], 
    "origin_addresses" : [ "Washington, DC, USA" ], 
    "rows" : [ 
     { 
     "elements" : [ 
      { 
       "distance" : { 
        "text" : "225 mi", 
        "value" : 361951 
       }, 
       "duration" : { 
        "text" : "3 hours 51 mins", 
        "value" : 13876 
       }, 
       "status" : "OK" 
      } 
     ] 
     } 
    ], 
    "status" : "OK" 
} 


     // Parse the whole JSON result. 
     JSONObject o1 =(JSONObject)JSONValue.parse(outputString); 

     JSONArray a1 = (JSONArray) o1.get("rows");//2 
     for (int i = 0; i < a1.size(); i++) { 
      JSONObject o2 = (JSONObject) a1.get(i);//3 
      JSONArray a2 = (JSONArray) o2.get("elements");//4 
      for (int j = 0; j < a2.size(); j++) { 
       JSONObject o3 = (JSONObject) a2.get(j);//3 
       JSONArray a3 = (JSONArray) o3.get("distance");//4 
       for(int k =0; k < a3.size(); k++) { 
       System.out.println(((JSONObject) a3.get(k)).get(
         "text").toString());//5 
       } 

      } 

     } 

나는 거리텍스트 값에 액세스 할 수 좋아하고 것 또한 텍스트 기간 값. 나는 거리와 시간에 액세스하는 코드를 발견하지만 난이 줄에이 expection

Exception in thread "main" java.lang.ClassCastException: org.json.simple.JSONObject cannot be cast to org.json.simple.JSONArray 

를 얻을 오래된 것들의 예를 다음 루프에 대한 세 번째를 추가 할 때 :

JSONArray a3 = (JSONArray) o3.get("distance");//4 

어떤 도움이나에 대한 제안 어떻게 다른 방법으로 그것을합니까? 감사합니다

답변

0

사용 된 JSONObject 나를 위해 그것을 해결 @sasikumar

JSONObject a3 = (JSONObject) o3.get("distance"); 
String text = null; 
text= (String) a3.get("text"); 
value=(String)a4.get("text"); 

의 도움이 아니 배열

JSONObject a3 = (JSONObject) o3.get("distance"); 

다음

String text=a3.getString("text"); 
    String value=a3.getString("value"); 
+0

빠른 응답 @sasikumar 주셔서 감사하지만이다는 에는 getString이 –

+0

가 한 String.valueOf()를 추가 된 JSONObject 유형에 대해 정의되지, 같은 대답 – sasikumar

+0

편집 체크 말한다. 나는 JSONObject가 getString 메소드를 가지고 있지 않다고 생각한다. –

0

때문이다.

관련 문제