JSON.parseArray转换数组里有空值时抛出异常

JSON.parseArray转换数组里有空值时抛出异常

问题描述:

img
如图,当我转化这个数组时,因为这个数组里有空值就抛出了异常,我用debug走,发现到了这个转换json这一步就会直接跳转到了这两个页面。

img

img
搞不清楚怎么会发生这个跳转,当数组里没空值时不会发生这个情况

两种方法参考:
1 TaskDetail成员变量改为允许空值
2 通过AOP拦截 parseArray的转换过程,逢null转""或0

1.可以在TaskDetail里面的get方法判断一下,如果是null,则返回空字符串,
2.写个方法处理一下null问题,参考:

//判断当前字符串如果为空或者Null则返回字符串 空 ""
        public static Object isNullReturnEmpty(Object obj){
               if(null == obj || "".equals(obj) ){
                   return "";//如果获取数据失败,则返回-
               }
               return obj;
        }
        /*
            * 将List<map>转换为JSONArray,将null替换为""
         */
        public static JSONArray parseJSONArrayForListMap(List<Map> listMap) {
            
            JSONArray array = new JSONArray();
            for(Map mmp : listMap) {
                JSONObject mmpJson = new JSONObject();

                Iterator iter = mmp.entrySet().iterator();
                while (iter.hasNext()) {
                    Map.Entry entry = (Map.Entry) iter.next();
                    Object key = entry.getKey();
                    Object val = isNullReturnEmpty(entry.getValue());
                    mmpJson.put(key+"", val);
                    
                }
                array.add(mmpJson);
            }
            return array;
        }

想看下你的 taskDetails 的值是多少

  1. 类似JSON的挂载方法 一般都会涉及到假值的问题
  2. 在使用的时候尽可能先对相对应的数据做提前过滤处理,避免不必要的麻烦
  3. 从根源解决问题 省去后续做一系列的假值检测