Jackson相关问题

1、json转dto的时候,dto不能定义isActive这种带有is的前缀,如果使用Lombok的Getter/Setter的话,json {"isActive": true},这样,将无法正确赋值。此时的dto再次转为json之后,得到的是active:false,因为字段不匹配。原因是jackson根据setter方法进行赋值。


    private boolean isActive; //不推荐
    private boolean active; //推荐

修改建议:

1)方法1:isActive改为:active(推荐方案)

2)方法2:手动写getter\setter方法为:

    public boolean isActive() {
        return isActive;
    }

    public void setIsActive(boolean active) {
        isActive = active;
    }

2、如果有3个double的类型,这样赋值:

@Getter
@Setter
@ToString
@EqualsAndHashCode
class SpecialValues {
    private double infinityValue;
    private double negativeInfinity;
    private double notANumber;
}
        SpecialValues specialValues = new SpecialValues();
        specialValues.setInfinityValue(Double.POSITIVE_INFINITY);
        specialValues.setNegativeInfinity(Double.NEGATIVE_INFINITY);
        specialValues.setNotANumber(Double.NaN);

那么json格式化之后,会是这样的:

{"infinityValue":"Infinity","negativeInfinity":"-Infinity","notANumber":"NaN"}

注意,这个并不是数值类型,而是字符串类型了。

需要启用NaN字符串解析:

ObjectMapper mapper = new ObjectMapper()
  .enable(JsonParser.Feature.ALLOW_NON_NUMERIC_NUMBERS); // 允许 Infinity/NaN

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值