Java JSONExeption:项没有值
我正在尝试解析Android应用程序中的一些JSON。返回一个JSONObject,在该JSONObject中有一个JSONArray。但我的问题是:在某种程度上,Android无法识别JSONObject中的数组 这是我的Android代码:Java JSONExeption:项没有值,java,android,json,arrays,jsonobject,Java,Android,Json,Arrays,Jsonobject,我正在尝试解析Android应用程序中的一些JSON。返回一个JSONObject,在该JSONObject中有一个JSONArray。但我的问题是:在某种程度上,Android无法识别JSONObject中的数组 这是我的Android代码: JSONParser jp = new JSONParser(); JSONObject json = jp.getList(id,code); Log.v("json: ", json.getString("tag")); JSONArray j
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();
最后,我的日志:
04-05 22:23:39.082: D/Http Response:(31845): org.apache.http.client.methods.HttpPost@65684f78
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)
我的问题是:我做错了什么?
提前谢谢 这可能发生在JSONObject的getter函数中。这意味着您正试图使用实际不存在的id从JSONObject检索值。在检索任何值之前,使用hasname检查JSONObject中是否存在该值。你可以出去看看更多的细节
希望这有帮助。jarr.length包含空值,您确定该数组中没有空值吗?你能试着打印该数组的长度吗?试着调试它,并在json初始化之后放置一个断点。您应该能够查看它的内容。如果看起来里面没有条目,那么原始json字符串或解析方法就有问题。
04-05 22:23:39.082: D/Http Response:(31845): org.apache.http.client.methods.HttpPost@65684f78
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)