当前位置: 首页 > article >正文

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


http://www.kler.cn/a/613563.html

相关文章:

  • 高级java每日一道面试题-2025年3月14日-微服务篇[Eureka篇]-Eureka如何保证高可用性?
  • 3D Gaussian Splatting部分原理介绍和CUDA代码解读(一)——3D/2D协方差和高斯颜色的计算
  • MLP(Multilayer Perceptron, 多层感知机)
  • Supabase 匿名密钥与服务角色密钥详细对比文档
  • 初识MySQl · 内置函数
  • LangChain 文档加载完全指南:从PDF到YouTube的多样化数据源处理
  • 人工智能:officeAI软件,如何调整AI对话界面的字体?
  • 【图片识别Excel表格】批量将图片上的区域文字识别后保存为表格,基于WPF和阿里云的项目实战总结
  • Jupyter Notebook :美化读取到的JSON格式的数据(以表格形式呈现)
  • 【go微服务】Golang微服务之基--rpc的实现原理以及应用实战
  • Android - 2025年安卓真的闭源了吗
  • 诠视科技MR眼镜如何安装apk应用
  • TensorFlow之sparse tensor
  • STM32 CAN学习(一)
  • [C++开发经验总结]何时用push?/何时用emplace?
  • 鸿蒙学习笔记(3)-像素单位、this指向问题、RelativeContainer布局、@Style装饰器和@Extend装饰器
  • 【NLP 50、损失函数 KL散度】
  • Unity 简单使用Addressables加载SpriteAtlas图集资源
  • java使用aspose添加多个图片到word
  • 3.27-1 pymysql下载及使用