/ / JSONExeption: No hay valor para los elementos: java, android, json, arrays, jsonobject

JSONExeption: No hay valor para los elementos: java, android, json, arrays, jsonobject

Estoy tratando de analizar algunos JSON en mi Androidsolicitud. Se devuelve un JSONObject y en ese JSONObject hay un JSONArray. Pero mi problema es: de alguna manera, Android no reconoce la matriz en el JSONObject.

Este es mi código de 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();

Mi JSON está bien, porque esto Log.v("json: ", json.getString("tag")); solo funciona bien este es mi 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"
}
]
}

Y por fin mi 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)

Mi pregunta es: ¿qué estoy haciendo mal? ¡Gracias por adelantado!

Respuestas

0 para la respuesta № 1

Esto podría suceder en la función getter de JSONObject. Significa que está intentando recuperar el valor de la JSONObject utilizando un ID que no existe realmente. Antes de recuperar cualquier valor, compruebe si existe en el JSONObject haciendo uso de has(name). Usted puede Mira esto para más detalles.

Espero que esto ayude.