Java の Jackson でカスタム シリアライザを使用する
 
このチュートリアルでは、Java で Jackson を使用してカスタム シリアライザーを使用する方法について説明します。 まず、シリアル化の概念を見てみましょう。
Java でのシリアル化
Java のシリアル化プロセスは、オブジェクトをバイト ストリームとの間で変換する手法です。 これにより、オブジェクトをファイルに保存できるだけでなく、オブジェクトをネットワーク経由で送信することも可能になります。
シリアル化プロセスは、Serializable インターフェイスの実装を作成することから始まり、続いて Java.io を使用します。
クラスに Jackson を使用したカスタム シリアライザー
Customer と Product という 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);
}
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