this을 사용하여 간단한 JSON 파서를 만들었습니다. 내가하고 싶은 것은 Google지도 API를 사용하여 비즈니스의 이름과 위도/경도를 파싱하는 것입니다.하지만 제대로 파싱 할 수없는 것 같습니다. JSON 결과JSON 파서 노드 건너 뛰기?
예 :
"results" : [
{
"geometry" : {
"location" : {
"lat" : 41.8881090,
"lng" : -87.6308430
}
},
"name" : "American Bar Association",
},
{
"geometry" : {
"location" : {
"lat" : 41.8721230,
"lng" : -87.6294680
}
},
"name" : "Bar Louie",
} ], "status" : "OK"}
나는 다른 세부 사항 중 일부는 예를 단축에 관심이 임하지만, 여기에 내 코드입니다 꺼내서 :
JSONParser jParse = new JSONParser();
JSONObject json = jParse.getJSON(url);
try
{
JSONArray contacts = json.getJSONArray("results"); //Parent Node
for(int i = 0; i < 5; i++)//Loop through first 5 results results
{
JSONObject c = contacts.getJSONObject(i);
name = c.getString("name");//Gets name field
//get lat from location which is a sub object of geometry
lat = Float.valueOf (contacts.getJSONObject(i).getJSONObject("geometry").getJSONObject("location").getString("lat"));
}
} catch (JSONException e) { e.printStackTrace(); }
내가 실행 그것은 첫 번째 결과를 잘 얻었지만 정확한 이름과 위도를 얻었지만 두 번째 결과로 이동하는 대신 i의 마지막 결과로 이동하여 루프의 나머지 부분을 인쇄합니다.
- 루프 1 출력 : 결과 # 1 //이 좋은
- 루프 2 출력 : 결과 # 5 // 어떻게 든 우리가 건너 내가 얻을 5 개 결과를 통해 I 루프를하는 경우 설명하기 어려운, 내가 무엇을 의미하는 것은 # 5 대신을 결과 # 2
- 루프 3 출력 방법 : 결과 #을 이제 그냥 루프
- 루프 4 출력의 나머지 부분을 통해 인쇄 # 5 각 시간을 유지 // 5 : 결과 # 5
- 루프 5 출력 : 결과 # 5
for 루프를 무시하고 마지막 결과를 얻는 방법을 모르겠습니다. 인스턴트 메시지를 사용하여 결과를 인쇄하고 짧은 스 니펫으로 생략했습니다.
(그 중요한 경우 내가, 내가 별도의 스레드를 통해이를 실행하고 토스트 메시지를 표시 핸들러를 사용하고주의 할 것이다)
난 정말 자바 위대한 아니에요 그리고 그것은 처음 I JSON을 사용하여 내가 말했을 수도있는 어리 석음을 아끼지 않았습니다. 어떤 도움이라도 대단히 감사합니다. :)
코드가 변경되었습니다. 5 루프는 코드 루프에서도 5를 사용해야하는 예입니다. 죄송합니다. –
contacts.lenght 또는 그와 비슷한 것을 사용해야합니다. 하드 코딩을 피하십시오. – andres83
.length()를 사용합니다. 테스트 목적으로 만 5 회 반복하고 싶습니다. 불행히도이 문제를 일으키는 것이 무엇인지 아직 파악하지 못했습니다. –