コンストラクタに@JsonCreatorアノテーションが付けられている場合、その引数に@JsonPropertyアノテーションが付けられる必要があるのはなぜですか? 質問する

コンストラクタに@JsonCreatorアノテーションが付けられている場合、その引数に@JsonPropertyアノテーションが付けられる必要があるのはなぜですか? 質問する

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;
}

なぜそれが必要なのか分かりません。説明していただけますか?

ベストアンサー1

Jackson は、JSON オブジェクトからコンストラクターにフィールドを渡す順序を認識する必要があります。Java ではリフレクションを使用してパラメーター名にアクセスすることはできません。そのため、この情報をアノテーションで繰り返す必要があります。

おすすめ記事