/ / JSONExeption: nenhum valor para itens - java, android, json, matrizes, jsonobject

JSONException: Nenhum valor para itens - java, android, json, matrizes, jsonobject

Eu estou tentando analisar alguns JSON no meu Androidaplicação. Um JSONObject é retornado e nesse JSONObject existe um JSONArray. Mas meu problema é: de alguma forma o Android não reconhece o array no JSONObject.

Este é o meu código 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();

Meu JSON está OK, porque isso Log.v("json: ", json.getString("tag")); apenas funciona bem. este é o meu 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"
}
]
}

E finalmente meu LogCat:

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)

Minha pergunta é: o que estou fazendo errado? Desde já, obrigado!

Respostas:

0 para resposta № 1

Isso pode acontecer na função getter de JSONObject. Isso significa que você está tentando recuperar o valor do JSONObject usando um id que na verdade não existe. Antes de recuperar qualquer valor, verifique se ele existe no JSONObject fazendo uso de has(name). Você pode verifique isso para mais detalhes.

Espero que isto ajude.