阿里巴巴fastjson转换对象时属性为空null的处理为空串""的解决办法

在使用阿里巴巴的插件返回对象是,如果需要对其进行json格式化一下,默认是不反回null属性的,当然可以设置的,使用重载方法

JSONObject.toJSONString(travelWrite1, SerializerFeature.WriteMapNullValue

注意是使用SerializerFeature.WriteMapNullValue序列化规则

这里介绍一下JSONObject.toJSONString(Object object, SerializerFeature... features)的具体序列化机制

QuoteFieldNames———-输出key时是否使用双引号,默认为true 
WriteMapNullValue——–是否输出值为null的字段,默认为false 
WriteNullNumberAsZero—-数值字段如果为null,输出为0,而非null 
WriteNullListAsEmpty—–List字段如果为null,输出为[],而非null 
WriteNullStringAsEmpty—字符类型字段如果为null,输出为”“,而非null 
WriteNullBooleanAsFalse–Boolean字段如果为null,输出为false,而非null

其中WriteNullStringAsEmpty序列化没有按照预期,估计是bug,或者和spring mvc框架的不兼容导致的也可能,但是用什么办法解决呢,答案是使用过滤器

private ValueFilter filter = new ValueFilter() {
    @Override
    public Object process(Object obj, String s, Object v) {
    if(v==null)
        return "";
    return v;
    }
};
JSON.toJSONString(jsonMap, filter)

 官方项目: https://github.com/alibaba/fastjson

补充:

//json字符串数组转java集合(如果从redis获取到的是下面的格式的user,那么@ResponseBody会继续处理这个字符串,导致转义"\),如下解决方法可行
String user="[{"name":"zxx","age":18},{"name":"zcytz","age":5}]";
List = JSONArray.parseArray(user.toString(), User.class);

方便转换

阿里巴巴fastjson转换对象时属性为空null的处理为空串

你可能感兴趣的:(BUG笔记,B-java基础)