2014-04-05 11 views
0

Android 애플리케이션에서 일부 JSON을 구문 분석하려고합니다. JSONObject가 반환되며 JSONObject에는 JSONArray가 있습니다. 하지만 내 문제는 : 어떤면에서 안드로이드는 JSONObject의 배열을 인식하지 못합니다.JSONExeption : 항목에 대한 값이 없습니다.

이 내 안드로이드 코드 :이 Log.v("json: ", json.getString("tag"));이 잘 작동하기 때문에

JSONParser jp = new JSONParser(); 
JSONObject json = jp.getList(id,code); 
Log.v("json: ", json.getString("tag")); 
JSONArray jarr = json.getJSONArray("items"); 
for (int i = 0; i < jarr.length(); i++) { 
JSONObject jobj = jarr.getJSONObject(i); 
list.add(jobj.getString("title")); 
} 
adapter.notifyDataSetChanged(); 

내 JSON은 OK입니다.

{ 
tag: "getlist", 
status: 1, 
success: "false", 
items: [ 
    { 
    id: "1", 
    owner: "1", 
    datecreated: "2013-10-12 20:05:00", 
    version: "1", 
    title: "asdfjkl", 
    subject: "Wiskunde D" 
    }, 
    { 
    id: "2", 
    owner: "1", 
    datecreated: "2013-10-28 05:32:09", 
    version: "1", 
    title: "asdfjkl", 
    subject: "Nederlands" 
    } 
] 
} 

그리고 내 로그 캣 finnaly :

04-05 22:23:39.082: D/Http Response:(31845): [email protected] 
04-05 22:23:39.082: V/json:(31845): getlist 
04-05 22:23:39.082: W/System.err(31845): org.json.JSONException: No value for items 
04-05 22:23:39.092: W/System.err(31845): at org.json.JSONObject.get(JSONObject.java:355) 
04-05 22:23:39.092: W/System.err(31845): at org.json.JSONObject.getJSONArray(JSONObject.java:549) 
04-05 22:23:39.092: W/System.err(31845): at nl.wacsite.wacsitebeta.MainFragmentTab$getListAsyncTask.doInBackground(MainFragmentTab.java:62) 
04-05 22:23:39.092: W/System.err(31845): at nl.wacsite.wacsitebeta.MainFragmentTab$getListAsyncTask.doInBackground(MainFragmentTab.java:1) 
04-05 22:23:39.092: W/System.err(31845): at android.os.AsyncTask$2.call(AsyncTask.java:288) 
04-05 22:23:39.092: W/System.err(31845): at java.util.concurrent.FutureTask.run(FutureTask.java:237) 
04-05 22:23:39.092: W/System.err(31845): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231) 
04-05 22:23:39.092: W/System.err(31845): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) 
04-05 22:23:39.092: W/System.err(31845): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) 
04-05 22:23:39.092: W/System.err(31845): at java.lang.Thread.run(Thread.java:811) 

내 질문입니다 : 내가 뭘 잘못하고 이 내 JSON입니까? 미리 감사드립니다.

+0

'jarr.length()'에는 null이 포함되어 있습니다. 해당 배열에는 null이 없습니다. 해당 배열의 길이를 인쇄해볼 수 있습니까? –

+0

디버깅을 시도하고'json'이 초기화 된 직후에 중단 점을 넣으십시오. 당신은 그것의 내용을 볼 수 있어야합니다. 항목이 그 안에있는 것처럼 보이지 않으면 원래 json 문자열이나 구문 분석 방법에 문제가 있습니다. – dharms

답변

0

게터 기능이 JSONObject 일 때 발생할 수 있습니다. 실제로 존재하지 않는 ID를 사용하여 JSONObject에서 값을 검색하려고합니다. 어떤 값을 검색하기 전에 has(name)을 사용하여 JSONObject에 존재하는지 확인하십시오. 자세한 내용은 check this을 참조하십시오.

희망이 도움이됩니다.

관련 문제