java - 为什么构造函数用@JsonCreator注解时,它的参数必须用@JsonProperty注解?

标签 java json serialization jackson

在 Jackson 中,当您使用 @JsonCreator 注释构造函数时,必须使用 @JsonProperty 注释其参数。所以这个构造函数

public Point(double x, double y) {
    this.x = x;
    this.y = y;
}

变成这样:

@JsonCreator
public Point(@JsonProperty("x") double x, @JsonProperty("y") double y) {
    this.x = x;
    this.y = y;
}

我不明白为什么它是必要的。能解释一下吗?

最佳答案

Jackson 必须知道将字段从 JSON 对象传递到构造函数的顺序。 在 Java 中使用反射无法访问参数名称 - 这就是您必须在注释中重复此信息的原因。

关于java - 为什么构造函数用@JsonCreator注解时,它的参数必须用@JsonProperty注解?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21920367/

相关文章:

Python 无法导入名称序列

Java : Static Methods and Static Blocks Output

PHP json_decode 返回空数组

c# - Json.Net 从驼峰表示法反序列化为标准 .Net 属性表示法(无属性)

java - JAX-RS:如何在发送响应之前拦截 json 消息体?

jquery - 如何存储和访问站点的 JSON 数据?

c++ - C/C++ 内存问题?

java - JDBI中如何动态绑定(bind)一个表名

java - 从 Android 中的两个不同 Activity 打开时 Activity 的不同行为

java - RxJava : observeOn, subscribeOn, and doFinally, IO和UI线程切换