在做接口开发常常会用到JSON数据格式,但是在有些时间类型属性为null时转换会报错,解决方法我这里是把为null的去掉。
//正常用jsonObject序列化后得到字符串 //{id:18, name:"张山"} // 现在如果name=null的话 我不想让它系列化 我想返回这样的结果{id:18},
异常如下:
处理方法:
很简单net.sf.json在格式化中可以传递一个JsonConfig,实现setJsonPropertyFilter方法然后修改apply方法即可。
JsonConfig config = new JsonConfig(); config.setJsonPropertyFilter(new PropertyFilter() { @Override public boolean apply(Object source, String name, Object value){ return value.equals("null"); } }); JSONArray jsonArray = JSONArray.fromObject(object, config); System.out.println(jsonArray);
JDK1.8中有更风骚的写法:
JsonConfig config = new JsonConfig(); config.setJsonPropertyFilter((source, name, value) -> value.equals("null"));JSONArray jsonArray = JSONArray.fromObject(object, config); System.out.println(jsonArray);