異なるプロパティ名による 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 サイトの他の関連記事を参照してください。