Jackson でのカスタム シリアライザーの使用
Jackson は、柔軟性とパフォーマンスで知られる Java の人気のある JSON 処理ライブラリです。特定のシリアル化要件を処理するには、カスタム シリアライザーを使用できます。この記事では、Jackson を使用してカスタム シリアライザーを作成および利用するためのステップバイステップ ガイドを提供します。
2 つの Java クラス、User と Items があるシナリオを考えてみましょう。ユーザーとアイテムの両方にカスタム シリアル化ルールを指定して、Item オブジェクトを JSON にシリアル化したいと考えています。
Item のカスタム シリアライザーを作成するには、JsonSerializer
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 サイトの他の関連記事を参照してください。