Jackson でカスタム シリアライザーを利用する方法
Jackson では、カスタム シリアライザーを利用することで、特定のクラスに合わせた JSON シリアル化が可能になります。
カスタムの作成Serializer
Item クラスからオブジェクトをシリアル化するには、カスタム シリアライザーを作成します。
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.createdBy.id); jgen.writeEndObject(); } }
カスタム シリアライザーの登録
作成後シリアライザーに登録する必要がありますJackson:
SimpleModule simpleModule = new SimpleModule("SimpleModule", new Version(1,0,0,null)); simpleModule.addSerializer(new ItemSerializer()); mapper.registerModule(simpleModule);
型登録の処理
型処理が欠落しているため、Jackson はエラーを発生させます。この問題は、型を明示的に処理することで解決します。
public class ItemSerializer extends JsonSerializer<Item> { @Override public void serialize(Item value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException { // ... (Serialization code) } @Override public Class<Item> handledType() { return Item.class; } }
Jackson によるシリアル化
カスタム シリアライザーを登録して、通常どおり、Item オブジェクトをシリアル化します。
StringWriter writer = new StringWriter(); try { mapper.writeValue(writer, myItem); } catch (JsonGenerationException | JsonMappingException | IOException e) { e.printStackTrace(); }
ユーザーの例シリアル化
カスタム シリアル化戦略を使用してユーザー オブジェクトをシリアル化するには、同様のシリアライザーを作成し、Jackson に登録します。
カスタム シリアライザーにより、オブジェクトの JSON 表現を柔軟に制御できることを覚えておいてください。 、特定のシリアル化要件に対応します。
以上が調整された JSON シリアル化のために Jackson でカスタム シリアライザーを作成して登録するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。