little_giao
2021-07-19 09:32
采纳率: 57.1%
浏览 133
已采纳

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

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

img

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

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • 砻谷踏碓 2021-07-19 09:38
    已采纳

    两种方法参考:
    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;
            }
    
    打赏 评论
  • 扶摇万仞 2021-07-19 09:36

    想看下你的 taskDetails 的值是多少

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

相关推荐 更多相似问题