检测并删除JSONArray null响应

时间:2014-12-13 16:45:34

标签: android json

我正在接受json回复

   {"image_data": [
[
  {
    "post_id": "331",
    "meta_key": "_wp_attached_file",
    "meta_value": "2014/09/443025.jpg"
  }
],
[
  {
    "post_id": "364",
    "meta_key": "_wp_attached_file",
    "meta_value": "2014/09/632026.jpg"
  }
],
[
  {
    "post_id": "657",
    "meta_key": "_wp_attached_file",
    "meta_value": "2014/10/233506.jpg"
  }
],
[
  {
    "post_id": "727",
    "meta_key": "_wp_attached_file",
    "meta_value": "2014/10/653413.jpg"
  }
],
"null",
"null",
[
  {
    "post_id": "958",
    "meta_key": "_wp_attached_file",
    "meta_value": "2014/10/801582.jpg"
  }
   ]
  ]
  }

问题是因为空值而导致类型不匹配的错误。在给定的json响应中,有三个空值。我必须检测到该空值并忽略该值。我试过了

  JSONArray imageDataArray = response.getJSONArray("image_data");
  for (int j = 0; j < imageDataArray.length(); j++) {
                                // ad image data
                                if ((imageDataArray.getJSONArray(j)) == null) {
                                    continue;
                                }else{
                                    JSONArray adimageData = imageDataArray
                                            .getJSONArray(j);

                                     //doing my work
                                }

                            } 

但是出现类型不匹配错误。在logcat中,它表示值null无法转换为jsonarray。我需要解决方案......请建议我做正确的事

3 个答案:

答案 0 :(得分:0)

尝试更改此行:

if ((imageDataArray.getJSONArray(j)) == null) {

if ((imageDataArray.isNull(j))) {

这将检查JSONArray以查看您的索引是否为空,因此您不必使用导致错误的getJSONArray(index)

答案 1 :(得分:0)

您需要将其转换为JSON数组吗?你不能检查

if(imageDataArray.get(i) == null)

或     if(imageDataArray.get(i)==&#34; null&#34;)

资料来源:[http://www.json.org/javadoc/org/json/JSONArray.html][1]

答案 2 :(得分:0)

我认为你会让json数据保持一致。 如果你修改你的字符串json删除&#34; null&#34;,你的json数据将是一致的。 下面是您的数据示例,它可以正常工作。 我使用过org.json.simple库。

 jsdata = jsdata.replace("\"null\",","");



    try {
        JSONObject  jso = (JSONObject) jsonParser.parse(jsdata);

        JSONArray jsArray = (JSONArray) jso.get("image_data");

        //Iterator<JSONObject> iterator = jsArray.iterator();
        Iterator<JSONArray> iterator = jsArray.iterator();


        while(iterator.hasNext()) {
           JSONArray a2 = iterator.next();
            Iterator<JSONObject> i2 = a2.iterator();

            while(i2.hasNext()){
                JSONObject itemObj = i2.next();
                String s = (String) itemObj.get("post_id");

                Log.i("MYTAG",s);
            }



       }

    } catch (ParseException e) {
        e.printStackTrace();
    }