I am working on an android app that get json content of a webservice called "WebUntis". The Json content i am getting looks like:
{"jsonrpc":"2.0","id":"req-002", "result":[ {"id":125043,"date":20110117,"startTime":800,"endTime":850, "kl":[{"id":71}], "te":[{"id":23}], "su":[{"id":13}], "ro":[{"id":1}]}, {"id":125127,"date":20110117,"startTime":1055,"endTime":1145, "kl":[{"id":71}], "te":[{"id":41}], "su":[{"id":19}], "ro":[{"id":31}]}, ...]}
As you can see in the result-array there are also other arrays like "kl", "su" and "ro"
I am getting the content of these array and then i store them in an arraylist. But when one of these array is empty, like;
{"jsonrpc":"2.0","id":"req-002", "result":[ {"id":125043,"date":20110117,"startTime":800,"endTime":850, "**kl":[]**, "te":[{"id":23}], "su":[{"id":13}], "ro":[{"id":1}]}, {"id":125127,"date":20110117,"startTime":1055,"endTime":1145, "kl":[{"id":71}], "te":[{"id":41}], "su":[{"id":19}], "ro":[{"id":31}]}, ...]}
I am always getting the error IndexOutOfRangeException
, but I am always telling it that it should not take the empty arrays, this is what I have tried:
JSONObject jsonResult = new JSONObject(s); // Get the result object JSONArray arr = jsonResult.getJSONArray("result"); for (int i = 0; i < arr.length(); i++) { JSONObject c = arr.getJSONObject(i); anfangStunde[i] = c.getString("startTime"); endeStunde[i] = c.getString("endTime"); // get the jsonarrays (kl, su, ro) kl = c.getJSONArray("kl"); su = c.getJSONArray("su"); ro = c.getJSONArray("ro"); // check if kl is not null if(kl != null){ klassenID[i] = kl.getJSONObject(0).getString("id"); } if (klassenID[i] != null) { klasse = webuntis.klassenMap.get(klassenID[i]); Log.d("ID und Klasse=", "" + klassenID[i] + ";" + klasse); } // get th ids fachID[i] = su.getJSONObject(0).getString("id"); if (fachID[i] != null) { fach = webuntis.faecherMap.get(fachID[i]); Log.d("ID und Fach=", "" + fachID[i] + ";" + fach); } // "Start;Ende;Klasse;Fach;Raum" store in arraylist webuntis.stundenPlan.add(anfangStunde[i] + ";" + endeStunde[i] + ";" + klasse + ";" + fach); // Write Data into a file for offline use: }
Can anyone help me ?