Fastjson 2.x踩坑——序列化Java字段为null值默认输出

先上无法实现效果的代码,我的目的是序列化时如果数字型字段为null则填0,尽可能保证数据整齐。

@Data
@NoArgsConstructor
@AllArgsConstructor
@ToString
@JSONType(
        serializeFeatures = {
                JSONWriter.Feature.WriteNulls,
                JSONWriter.Feature.WriteMapNullValue,
                JSONWriter.Feature.WriteNullNumberAsZero,
                JSONWriter.Feature.PrettyFormat,
        }
)
public class Student {
    @JSONField(name = "na") private String name;
    @JSONField(name = "ch") private Integer chinese;
    @JSONField(name = "ma") private Integer math;
    @JSONField(name = "en") private Integer english;
}

我肯定这是版本的BUG

但是结果不行!!!下面的代码才能达到目的

@Data
@NoArgsConstructor
@AllArgsConstructor
@ToString
public class Student {
    @JSONField(name = "na") private String name;
    @JSONField(name = "ch") private Integer chinese;
    @JSONField(name = "ma") private Integer math;
    @JSONField(name = "en") private Integer english;
}

Student student = new Student("jack",null,null,null);
String jsonString = JSON.toJSONString(student, JSONWriter.Feature.WriteNulls,               JSONWriter.Feature.WriteMapNullValue,JSONWriter.Feature.WriteNullNumberAsZero,JSONWriter.Feature.PrettyFormat);

还有第二种方法,换fastjson版本,升级至v2.0.58,升级后就能用第一段代码的写法了

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值