シリアル化および逆シリアル化中の 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 サイトの他の関連記事を参照してください。