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

博客介绍了使用阿里巴巴插件返回对象时进行JSON格式化的情况,默认不返回null属性,可通过SerializerFeature.WriteMapNullValue规则设置。还提到WriteNullStringAsEmpty序列化未达预期,可能是bug或与Spring MVC框架不兼容,可使用过滤器解决,同时给出官方项目链接。

在使用阿里巴巴的插件返回对象是,如果需要对其进行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<User> = JSONArray.parseArray(user.toString(), User.class);

方便转换

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值