andorid开发中 检测并处理 JSONArray 返回的空值问题

文章标签: android,json
2014-12-17 9:44:28     人阅读    


在我的android 开发中需要调用后台json,并接受返回的json请求,处理空值的时候报错"value null can not be converted to jsonarray",


我现在得到的错误 “类型不匹配  ”,主要是返回的json串中有3个值是空的,我现在想通过主动检测代码和处理,我通过如下代码接受返回的json 串。把里面的null值去掉

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
                                }

                            }

但是上面的代码同样报错,类型转换错误,在 android logcat中报错如下 value null can not be converted to jsonarray。

我的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串,并移除 “null” ,你的jsondata 必须是一致的,采用下面的代码处理的你的数据,工作正常,你需要使用

org.json.simple library.

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();
    }


原文地址:http://www.itmmd.com/201412/328.html
该文章由 萌萌的IT人 整理发布,转载须标明出处。

Java Android Json OutOfMemoryError   上一篇
下一篇  andorid 开发,如何在divider中间添加一个TextView
精彩回复
我要追加问题,请求站长解决!
姓名:       

《程序员app》专门为程序员量身定做!