JSON.parseArray转换数组里有空值时抛出异常
问题描述:
如图,当我转化这个数组时,因为这个数组里有空值就抛出了异常,我用debug走,发现到了这个转换json这一步就会直接跳转到了这两个页面。
搞不清楚怎么会发生这个跳转,当数组里没空值时不会发生这个情况
答
两种方法参考:
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 的值是多少
答
- 类似JSON的挂载方法 一般都会涉及到假值的问题
- 在使用的时候尽可能先对相对应的数据做提前过滤处理,避免不必要的麻烦
- 从根源解决问题 省去后续做一系列的假值检测