如何检查JSONArray在java中是否为空?
问题描述:
我正在研究一个名为“WebUntis”的web服务的json内容的android应用程序。 JSON的内容我得到类似的外观:如何检查JSONArray在java中是否为空?
{"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}]},
...]}
正如你可以将结果阵列中所看到的也有其他的阵列,如“KL”,“苏”和“RO”
我收到这些数组的内容,然后我将它们存储在一个数组列表中。 但是,当这些数组之一是空的,如;
{"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}]},
...]}
我总是得到错误IndexOutOfRangeException
, 但我总是告诉它,它不应该采取空数组,这是我曾尝试:
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:
}
能
任何人的帮助我 ?
答
如果该数组的文件中定义但是空的,如:
...
"kl":[]
...
getJSONArray("kl")
然后将返回一个空阵列,但对象不为空。然后,如果你这样做:
kl = c.getJSONArray("kl");
if(kl != null){
klassenID[i] = kl.getJSONObject(0).getString("id");
}
kl
是不空和kl.getJSONObject(0)
将抛出一个异常 - 有数组中没有第一个元素。
相反,你可以测试length()
,例如:
kl = c.getJSONArray("kl");
if(kl != null && kl.length() > 0){
klassenID[i] = kl.getJSONObject(0).getString("id");
}
不错的工作'如果(KL!= NULL && kl.length()> 0){'简单 – marlonpya 2017-02-10 19:50:56