ホームページ > Java > &#&チュートリアル > Jackson を使用してさまざまなシリアル化と逆シリアル化のために JSON プロパティ名をカスタマイズする方法

Jackson を使用してさまざまなシリアル化と逆シリアル化のために JSON プロパティ名をカスタマイズする方法

Patricia Arquette
リリース: 2024-10-27 06:56:03
オリジナル
829 人が閲覧しました

How to Customize JSON Property Names for Different Serialization and Deserialization Using Jackson?

シリアル化および逆シリアル化中の JSON プロパティ名のカスタマイズ

オブジェクト指向プログラミングでは、メソッド ゲッターを使用してプライベート クラス フィールドを操作することが望ましいことがよくあります。およびセッターを使用して、シリアル化および逆シリアル化中に一貫した形式でデータを表現します。ジャクソン ライブラリのアノテーション ベースのアプローチでは、単一のプロパティに異なる名前を割り当てることでこれを実現できます。

「red」という名前の整数フィールドを持つ「座標」クラスを考えてみましょう。 JSON オブジェクトをプロパティ名「r」を使用してシリアル化し、同時に名前「red」を使用して逆シリアル化したいと考えています。

これを実装するには、異なる値を持つ getter メソッドと setter メソッドの両方で @JsonProperty アノテーションを使用できます。ただし、このアプローチでは例外が発生しました:

<code class="json">org.codehaus.jackson.map.exc.UnrecognizedPropertyException: Unrecognized field "red"</code>
ログイン後にコピー

この問題は、Jackson が getter メソッドと setter メソッドの両方に同じフィールド名を割り当てるために発生します。これを解決するには、ゲッターとセッターに異なるメソッド名を使用する必要があります。

<code class="java">public class Coordinates {
    byte red;

    @JsonProperty("r")
    public byte getR() {
      return red;
    }

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

このアプローチでは、オブジェクトをプロパティ名 "r" で正常にシリアル化し、名前 "red" を使用して逆シリアル化します。

<code class="json">Serialization: {"r":5}
Deserialization: 25</code>
ログイン後にコピー

以上がJackson を使用してさまざまなシリアル化と逆シリアル化のために JSON プロパティ名をカスタマイズする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート