ホームページ  >  記事  >  Java  >  Jackson ライブラリのアノテーションは、JSON のシリアル化と逆シリアル化をどのように制御しますか?

Jackson ライブラリのアノテーションは、JSON のシリアル化と逆シリアル化をどのように制御しますか?

王林
王林オリジナル
2024-05-06 22:09:02886ブラウズ

Jackson ライブラリのアノテーションは、JSON のシリアル化と逆シリアル化を制御します。 シリアル化: @JsonIgnore: プロパティを無視します。 @JsonProperty: 名前を指定します。 @JsonGetter: get メソッドを使用します。 @JsonSetter: set メソッドを使用します。 逆シリアル化: @JsonIgnoreProperties: プロパティを無視します。 @JsonProperty: 名前を指定 @JsonCreator: コンストラクターを使用 @JsonDeserialize: カスタム ロジック

Jackson ライブラリのアノテーションは、JSON のシリアル化と逆シリアル化をどのように制御しますか?

JSON のシリアル化と逆シリアル化を制御するために Jackson ライブラリでアノテーションが使用されます

はじめに

Jackson ライブラリは、JSON データをバインドするための人気のある Java ライブラリです。注釈は Jackson ライブラリで重要な役割を果たし、JSON のシリアル化と逆シリアル化のプロセスを制御できるようになります。

シリアル化アノテーション

  • @JsonIgnore: プロパティまたはメソッドを無視して、JSON 出力に含まれないようにします。
  • @JsonProperty: JSON 出力のプロパティの名前を指定します。
  • @JsonGetter: プロパティに直接アクセスするのではなく、メソッドが呼び出されたときに返される値を取得します。
  • @JsonSetter: 値を直接割り当てるのではなく、setter メソッドが呼び出されたときにプロパティの値を設定します。

逆シリアル化アノテーション

  • @JsonIgnoreProperties: JSON 入力で指定されたプロパティを無視します。
  • @JsonProperty: JSON 入力でプロパティの名前を指定し、それをプロパティまたはメソッドにマップします。
  • @JsonCreator: setter メソッドを使用する代わりに、デフォルト以外のコンストラクターを使用してオブジェクトを作成します。
  • @JsonDeserialize: カスタム逆シリアル化ロジックを指定します。カスタム型コンバーターまたはハンドラーを使用できます。

実践的なケース

次は、Jackson アノテーションの使用方法を示すクラスの例です:

@JsonIgnoreProperties(ignoreUnknown = true)
public class Person {

    private String name;

    @JsonProperty("age")
    private int yearsOld;

    @JsonGetter("education")
    public String getEducation() {
        return "College";
    }

    @JsonSetter("years_old")
    public void setAge(int yearsOld) {
        this.yearsOld = yearsOld;
    }
}

この例では:

  • @JsonIgnoreProperties(ignoreUnknown = true) JSON 入力のクラスに存在しないプロパティを無視します。
  • @JsonProperty("age") JSON 出力の yearsOld プロパティの名前が「age」であることを指定します。
  • @JsonGetter("education") get メソッド「getEducation」を通じて「education」属性の値を返します。
  • @JsonSetter("years_old") 設定メソッド "setAge" を使用して、"yearsOld" 属性の値を設定します。

次の方法で、Jackson ライブラリをシリアル化および逆シリアル化に使用できます:

// 序列化
ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsString(person);

// 反序列化
Person person = mapper.readValue(json, Person.class);

以上がJackson ライブラリのアノテーションは、JSON のシリアル化と逆シリアル化をどのように制御しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。