Java の Jackson でカスタム シリアライザを使用する

Muhammad Zeeshan 2023年10月12日
  1. Java でのシリアル化
  2. クラスに Jackson を使用したカスタム シリアライザー
  3. Java で serialize() メソッドを使用する
Java の Jackson でカスタム シリアライザを使用する

このチュートリアルでは、Java で Jackson を使用してカスタム シリアライザーを使用する方法について説明します。 まず、シリアル化の概念を見てみましょう。

Java でのシリアル化

Java のシリアル化プロセスは、オブジェクトをバイト ストリームとの間で変換する手法です。 これにより、オブジェクトをファイルに保存できるだけでなく、オブジェクトをネットワーク経由で送信することも可能になります。

シリアル化プロセスは、Serializable インターフェイスの実装を作成することから始まり、続いて Java.io を使用します。

クラスに Jackson を使用したカスタム シリアライザー

CustomerProduct という 2つの単純なクラスを作成しましょう。

コード - Customer クラス:

public class Customer {
  public int id;
  public String Cname;
}

コード - 製品 クラス:

public class Product {
  public int id;
  public String Productname;
  public Customer buyer;
}

クラスに JsonSerialize を適用する

次に、次のようにクラスにシリアライザーを登録します。

@JsonSerialize(using = ProductSerializer.class)
public class Product {
  public int id;
  public String Productname;
  public Customer buyer;
}

次に、標準のシリアル化を適用します。

Product p = new Product(10, "drinks", new Customer(12, "Peter"));
String serialized = new ObjectMapper().writeValueAsString(p);

最後に、シリアライザーによって生成され、@JsonSerialize を使用して定義された、個別化された JSON 出力を取得します。

Java で serialize() メソッドを使用する

StdSerializer クラスを使用して、カスタム シリアライザーを実装できます。 この場合、serialize() メソッドをオーバーライドする必要があります。

構文:

public abstract void serialize(Product val, JsonGenerator jg, SerializerProvider p)
    throws IOException

カスタム シリアライザーを使用してもかまわない場合は、Product クラス用に開発する必要はありません。 代わりに、Customer クラス用に作成する必要があります。

public void serialize(Product value, JsonGenerator jg, SerializerProvider p)
    throws IOException, JsonProcessingException {
  jg.writeNumber(id);
}
Muhammad Zeeshan avatar Muhammad Zeeshan avatar

I have been working as a Flutter app developer for a year now. Firebase and SQLite have been crucial in the development of my android apps. I have experience with C#, Windows Form Based C#, C, Java, PHP on WampServer, and HTML/CSS on MYSQL, and I have authored articles on their theory and issue solving. I'm a senior in an undergraduate program for a bachelor's degree in Information Technology.

LinkedIn