2012-04-19 6 views
0

내 응용 프로그램에서 나는 형식 아래복잡한 JSON 구문 분석은 안드로이드

{"quote":[{"orderId":"3209926"},{"totalpages":1}]} 

에 JSON 응답을 내가했던 코드입니다 구문 분석 할, 그러나 문제는 "totalpages"를 얻는 방법이다 값?

try { 
JSONObject jObject = new JSONObject(result); 
JSONArray jArray = jObject.getJSONArray("quote"); 
for (int i = 0; i < jArray.length(); i++) 
       { 
     JSONObject offerObject = jArray.getJSONObject(i); 
     current.orderId = offerObject.getInt("orderId"); 

그것은 내가 객체의 경우 JSONObject 던져 JSONException의 다른 얻을-기능처럼 미리

+0

전체 구현을 표시 – waqaslam

답변

3

참고 getInt()에?

current.totalpage= offerObject.getInt("totalpages"); 

누구는이 구문 분석하는 방법을 알고 감사를 사용할 때 오류가 표시됩니다 요청한 키가 없습니다. 따라서 키를 요청하기 전에 hasKey()을 사용하여 개체에 키가 포함되어 있는지 확인해야합니다.

JSONObject offerObject = jArray.getJSONObject(i); 
if(offerObject.has("orderId") { 
    current.orderId = offerObject.getInt("orderId"); 
} 
if(offerObject.has("totalpages") { 
    current.totalpage= offerObject.getInt("totalpages"); 
} 

당신은 또한 루프 후 플래그와 검사를 추가 할 수 있습니다 ORDERID 및 totalpages 모두 JSON 데이터에 존재하는지 확인하기 : 당신이 다음 할 수있는 for 루프는 내부에 예를 들어

.

+0

실제로 응답에는 orderid와 totalpages 모두에 대한 값이 들어 있습니다. –

+0

예.하지만 루프의 첫 번째 반복에서 검사 된 하위 오브젝트에는 "totalpages"가 포함되지 않습니다. 마찬가지로, 두 번째 반복에서 검사 된 하위 객체에는 "orderId"가 포함되지 않습니다. 첫 번째 반복에서 검사 된 하위 오브젝트는'{ "orderId": "3209926"}'입니다. 두 번째 부분에서 검사되는 하위 객체는'{ "totalpages": 1}'입니다. –

+0

예 아담 .. 네 말이 맞아. 그럼 내가 어떻게 해석 할 수 있니? –

1

json이 왜 그 구조를 가지고 있는지 알지 못합니다. 그러나 구문 분석을 원할 경우 has 함수를 사용하여 다음과 같은 작업을 수행해야합니다.

for (int i = 0; i < jArray.length(); i++) { 
     JSONObject offerObject = jArray.getJSONObject(i); 
     if(offerObject.has("orderId")) { 
      current.orderId = offerObject.getInt("orderId"); 
     } else if(offerObject.has("totalpages")) { 
      current.totalpage= offerObject.getInt("totalpages"); 
     } 
} 
+0

그걸 시도했지만 logcat에 표시되는 응답이 오류입니다. org.json.JSONException : totalpages에 대한 값이 없습니다. –

+0

offerObject.has ("totalpages")의 결과를 확인할 수 있습니까? – Josnidhin

+0

한 가지 더 사용하고 있습니다. http://developer.android.com/reference/org/json/JSONObject.html 클래스 – Josnidhin