json字段为null时输出空字符串
Map < String , Object > jsonMap = new HashMap< String , Object>();
jsonMap.put("a",1);
jsonMap.put("b","");
jsonMap.put("c",null);
jsonMap.put("d","wuzhuti");
String str = JSONString(jsonMap);
System.out.println(str);
//输出结果:{"a":1,"b":"",d:"wuzhuti"}
从输出结果可以看出,null对应的key已经被过滤掉;这明显不是我们想要的结果,这时我们就需要⽤到fastjson的SerializerFeature序列化属性也就是这个⽅法:JSONString(Object object, features)
SerializerFeature有⽤的⼀些枚举值
QuoteFieldNames———-输出key时是否使⽤双引号,默认为true
WriteMapNullValue——–是否输出值为null的字段,默认为false
WriteNullNumberAsZero—-数值字段如果为null,输出为0,⽽⾮null
WriteNullListAsEmpty—–List字段如果为null,输出为[],⽽⾮null
WriteNullStringAsEmpty—字符类型字段如果为null,输出为”“,⽽⾮null
WriteNullBooleanAsFalse–Boolean字段如果为null,输出为false,⽽⾮null
现在加上
Map < String , Object > jsonMap = new HashMap< String , Object>();
jsonMap.put("a",1);
jsonMap.put("b","");
jsonMap.put("c",null);
jsonMap.put("d","wuzhuti");
String str = JSONString(jsonMap,SerializerFeature.WriteMapNullValue);
System.out.println(str);
//输出结果:{"a":1,"b":"","c":null,"d":"wuzhuti"}
但是,如果把WriteNullStringAsEmpty也加进去,为⽑不起作⽤?!?!?
String str = JSONString(jsonMap,SerializerFeature.WriteMapNullValue,SerializerFeature.WriteNullStringAsEmpty);  System.out.println(str);
//输出结果:{"a":1,"b":"","c":null,"d":"wuzhuti"}
⽬前的解决办法是加⼀个过滤器
private ValueFilter filter = new ValueFilter() {
@Override
空字符串是什么public Object process(Object obj, String s, Object v) {
if(v==null)
return"";
return v;
}
};
不过,⼼⾥不爽,为啥不起作⽤啊?SerializerFeature.WriteNullStringAsEmpty
fastjson github:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。