ホームページ > Java > &#&チュートリアル > Java で効率的な JSON 処理のために Jackson でカスタム シリアライザーを使用する方法

Java で効率的な JSON 処理のために Jackson でカスタム シリアライザーを使用する方法

Linda Hamilton
リリース: 2024-11-27 04:08:09
オリジナル
879 人が閲覧しました

How to Use Custom Serializers with Jackson for Efficient JSON Processing in Java?

Jackson でのカスタム シリアライザーの使用

Jackson は、柔軟性とパフォーマンスで知られる Java の人気のある JSON 処理ライブラリです。特定のシリアル化要件を処理するには、カスタム シリアライザーを使用できます。この記事では、Jackson を使用してカスタム シリアライザーを作成および利用するためのステップバイステップ ガイドを提供します。

2 つの Java クラス、User と Items があるシナリオを考えてみましょう。ユーザーとアイテムの両方にカスタム シリアル化ルールを指定して、Item オブジェクトを JSON にシリアル化したいと考えています。

Item のカスタム シリアライザーを作成するには、JsonSerializer を拡張するクラスを定義できます。このシリアライザーでは、serialize メソッドをオーバーライドして、必要な JSON 出力を書き込みます。たとえば、次のように ItemSerializer を定義できます:

public class ItemSerializer extends JsonSerializer<Item> {

    @Override
    public void serialize(Item value, JsonGenerator jgen,
            SerializerProvider provider) throws IOException,
            JsonProcessingException {
        jgen.writeStartObject();
        jgen.writeNumberField("id", value.id);
        jgen.writeNumberField("itemNr", value.itemNr);
        jgen.writeNumberField("createdBy", value.user.id);
        jgen.writeEndObject();
    }

}
ログイン後にコピー

ただし、カスタム シリアライザーを直接登録すると、発生したエラーが発生する可能性があります。代わりに、SimpleModule を使用して登録する必要があります。

ObjectMapper mapper = new ObjectMapper();
SimpleModule simpleModule = new SimpleModule("SimpleModule", new Version(1,0,0,null));
simpleModule.addSerializer(new ItemSerializer());
mapper.registerModule(simpleModule);
ログイン後にコピー

最後に、ObjectMapper を使用して、カスタム シリアル化ルールを適用して、Item オブジェクトを JSON にシリアル化できます。

または、処理用Java オブジェクトの日付フィールドでは、次のようなカスタム シリアライザーを作成できます。

public class CustomDateSerializer extends SerializerBase<Date> {

    public CustomDateSerializer() {
        super(Date.class, true);
    }

    @Override
    public void serialize(Date value, JsonGenerator jgen, SerializerProvider provider)
        throws IOException, JsonProcessingException {
        SimpleDateFormat formatter = new SimpleDateFormat("EEE MMM dd yyyy HH:mm:ss 'GMT'ZZZ (z)");
        String format = formatter.format(value);
        jgen.writeString(format);
    }

}
ログイン後にコピー

注釈を付けることで、 Date フィールドに @JsonSerialize(using = CustomDateSerializer.class) を指定すると、カスタム シリアル化が自動的に適用されます。

以上がJava で効率的な JSON 処理のために Jackson でカスタム シリアライザーを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート