gpt4 book ai didi

java - Jackson(fasterxml)反序列化的理解

转载 作者:行者123 更新时间:2023-11-30 07:49:04 27 4
gpt4 key购买 nike

How does Jackson deserialisation work when creating a Java object from JSON?

A common conception is that it first calls the No Argument Constructor and then proceeds to call setters.

但是

  • 如果没有无参数构造函数会怎样?
  • 可以要求 jackson 选择其他构造函数?
  • Boilerplate 有问题吗像 Lombok 这样的代码生成器?

最佳答案

Simply put, Jackson first calls a constructor to instantiate an object and then proceeds to call setters on remaining fields.

现在,它如何决定调用哪个构造函数以及剩余的字段是什么?

  • 如果构造函数上没有定义特殊注释,Jackson 将始终寻找无参数构造函数。我们很快就会出现特殊的注释。 如果 Jackson 没有找到无参数构造函数,它将抛出错误。
  • 从 fasterxml 2.7 开始,Jackson 还会查找 @ConstructorProperties annotation 。如果多个构造函数具有此注释,它将选择具有最大参数的构造函数。对于其余字段,它会调用它们的 setter 。
  • 您还可以使用@JsonCreator 来调用特定的构造函数。但是 @ConstructorProperties 仍然会干扰它。尽管 @JsonCreator 可用于单个构造函数,但 @ConstructorProperties 可用于多个构造函数。
  • Lombok 使用@ConstructorProperties 注释对其所有参数构造函数进行注释。因此,这也可能会干扰默认 Jackson 的工作。

关于java - Jackson(fasterxml)反序列化的理解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48743834/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com