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