0
我想解析我的Android應用程序中的一些JSON。一個JSONObject被返回,並且在那個JSONObject中有一個JSONArray。但我的問題是:在某些方面,Android無法識別JSONObject中的數組。JSONExeption:項目沒有值
這是我的Android代碼:
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的,因爲這只是Log.v("json: ", json.getString("tag"));
工作正常。 這是我的JSON:
{
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我的logcat:
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)
我的問題是:我究竟做錯了什麼? 在此先感謝!
'jarr.length()'包含空值,你確定該數組中沒有空值?你可以嘗試打印該數組的長度嗎? –
嘗試調試它並在'json'初始化後立即放置一個斷點。你應該能夠查看它的內容。如果它看起來不像項目,那麼你的原始json字符串或解析方法有問題。 – dharms