Jackson でシリアル化と逆シリアル化で異なる​​プロパティ名を実現するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-10-26 05:52:30
オリジナル
487 人が閲覧しました

How to Achieve Different Property Names for Serialization and Deserialization with Jackson?

異なるプロパティ名による JSON シリアル化/逆シリアル化

ジャクソン ライブラリは、シリアル化および逆シリアル化中にプロパティに異なる名前を指定できる柔軟性を提供します。次のシナリオを考えてみましょう:

フィールド「red」を持つ「Codies」という名前のクラスがあります。 JSON からの逆シリアル化中に、このフィールドをプロパティ名「red」にマップする必要があります。ただし、シリアル化中は、プロパティ名を "r" にする必要があります。

解決策

これを実現するには、別のメソッドとともに @JsonProperty アノテーションを使用できます。ゲッターとセッターの名前:

public class Coordinates {
    private int red;

    @JsonProperty("r")
    public int getRed() {
        return red;
    }

    @JsonProperty("red")
    public void setRed(int red) {
        this.red = red;
    }
}
ログイン後にコピー

ゲッターとセッターに異なるメソッド名を使用することにより、Jackson はそれらを別個のプロパティとして認識します。逆シリアル化中に、JSON プロパティ「red」を @JsonProperty("red") アノテーションを持つセッターにマップします。シリアル化中に、@JsonProperty("r") アノテーションを持つゲッターを使用して値を取得し、プロパティ "r" としてシリアル化します。

この動作を説明するために、次のテスト コードを考えてみましょう:

Coordinates c = new Coordinates();
c.setRed(5);

ObjectMapper mapper = new ObjectMapper();
System.out.println("Serialization: " + mapper.writeValueAsString(c));

Coordinates r = mapper.readValue("{\"red\":25}", Coordinates.class);
System.out.println("Deserialization: " + r.getRed());
ログイン後にコピー

出力:

Serialization: {"r":5}
Deserialization: 25
ログイン後にコピー

ご覧のとおり、プロパティ名 "red" が使用されています。逆シリアル化中はプロパティ名 "r" がシリアル化中に使用されます。

以上がJackson でシリアル化と逆シリアル化で異なる​​プロパティ名を実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!