如何在Java中检查JSONArray是否为空?

严重地

我正在开发一个Android应用,该应用获取名为“ WebUntis”的Web服务的json内容。我得到的Json内容如下所示:

{"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”,“ su”和“ ro”

我正在获取这些数组的内容,然后将它们存储在arraylist中。但是当这些数组之一为空时,就像;

    {"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:
 }

谁能帮我 ?

T·古奈尔

如果数组在文件中定义为空,例如:

...
"kl":[]
...

然后getJSONArray("kl")将返回一个数组,但对象不是null然后,如果您这样做:

kl = c.getJSONArray("kl");
if(kl != null){
   klassenID[i] = kl.getJSONObject(0).getString("id");
}

kl nullkl.getJSONObject(0)将抛出异常-有数组中没有第一个元素。

相反,您可以检查length(),例如:

kl = c.getJSONArray("kl");
if(kl != null && kl.length() > 0 ){
   klassenID[i] = kl.getJSONObject(0).getString("id");
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Java中检查JDBC表中的某些列是否为空

来自分类Dev

如何在XSLT中检查属性是否为空?

来自分类Dev

如何在tcl中检查变量是否为空

来自分类Dev

如何在tcsh Shell中检查变量是否为空?

来自分类Dev

如何在Golang中检查地图是否为空?

来自分类Dev

如何在Ruby中检查ARGF是否为空

来自分类Dev

如何在Postgres中检查数组是否为空

来自分类Dev

如何在C中检查String是否为空

来自分类Dev

如何在C ++中检查地图是否为空?

来自分类Dev

如何在VBA中检查表是否为空?

来自分类Dev

如何在PHP中检查数组是否为空(Codeigniter)

来自分类Dev

如何在Android中检查拖放是否为空

来自分类Dev

如何在Kotlin中检查序列是否为空

来自分类Dev

如何在C ++中检查分区是否为空

来自分类Dev

如何在Flutter中检查JSON数组是否为空

来自分类Dev

如何在C#中检查CKEditor是否为空

来自分类Dev

Xpages如何在JavaScript中检查日期是否为空?

来自分类Dev

如何在Android中检查表是否为空?

来自分类Dev

如何在Android中检查Interger是否为空

来自分类Dev

如何在Android中检查拖放是否为空

来自分类Dev

如何在Java Play框架中检查数据库表是否为空

来自分类Dev

检查Gson JsonArray是否为空

来自分类Dev

检查ResultSet在Java中是否为空

来自分类Dev

检查ResultSet在Java中是否为空

来自分类Dev

如何在Java中检查Long是否为null

来自分类Dev

如何在Java中检查输入是否为整数?

来自分类Dev

如何在Java中检查文件是否为gzip

来自分类Dev

如何在Java中检查链接列表是否为回文?

来自分类Dev

如何在SPARQL查询中检查字符串是否为空或为空?

Related 相关文章

热门标签

归档