fastjson SerializerFeature序列化属性的使用

如下理解参考此文章:https://blog.csdn.net/yxl_num/article/details/54846715
1、首先,为啥要知道这个东西呢?
因为现在项目基本都是前后端分离,操作的话一般都是返回json串,但是会有这种情况,加入你put一个key和value的时候,如果value是空,那么等你返回给前台的时候,前台就连这个key也拿不到了,就直接省掉了(相当于过滤掉了)
加上SerializerFeature就不会自动过滤了,返回什么就是什么,比如JSON.toJSONString的时候,如果加上SerializerFeature.WriteMapNullValue这个参数,那么value为空的,前台也能看到key,不会被过滤。(因为下面写了,WriteMapNullValue——–是否输出值为null的字段,默认为false )
2、具体来看一下他常用的属性
fastjson SerializerFeature有很多序列化属性,想研究的可以看源码,大约30+个属性,常用的就下面6个

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

3、但是!WriteNullStringAsEmpty这个属性使用的时候可能需要配合过滤器使用
来看一下,

WriteNullStringAsEmpty—字符类型字段如果为null,输出为”“,而非null

她说的是字符类型的字段如果是null就输出空字符串,但是大多数时候我们不是只返回一个字符串类型的变量哇,我们更多的是返回一个object,然后把它的所有属性名转成json中的key,属性值变成value。这个时候,WriteNullStringAsEmpty这个属性,就不好用的!!!

4、SerializeFilter
所以如果我们想把string等于null的转成"“的话,就需要再传一个参数SerializeFilter的实体对象。(这里的话,他有继承类,你可以根据你的需要进行选择)
比如SimplePropertyPreFilter,这个类的话,传你的object和需要null转成”"的属性名就可以了。
eg:SimplePropertyPreFilter filter = new SimplePropertyPreFilter(AAA.class, a,b,c,d,e);

基本上就是差不多这个意思:

JSON.toJSONString(Object, filter, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullStringAsEmpty);

如有不对,欢迎指正!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值