POJO からシリアライズしている JSON にフィールドを挿入しようとしています。Jackson を使用してシリアライゼーションを実行しており、フィールドを注入する顧客シリアライザーを作成できます。私がこれまでに持っているものは次のとおりです。
public class Main {
public static void main(String[] args) throws IOException {
Child newChild = new Child();
newChild.setName("John");
ObjectMapper mapper = new ObjectMapper();
SimpleModule module = new SimpleModule("Custom Child Serializer", new Version(1,0,0,null));
module.addSerializer(new CustomChildSerializer());
mapper.registerModule(module);
System.out.println(mapper.writeValueAsString(newChild));
System.in.read();
}
}
class CustomChildSerializer extends SerializerBase<Child> {
public CustomChildSerializer() {
super(Child.class);
}
@Override
public void serialize(Child child, JsonGenerator jgen, SerializerProvider serializerProvider) throws IOException, JsonGenerationException {
jgen.writeStartObject();
jgen.writeStringField("Name", child.getName());
jgen.writeStringField("Injected Value","Value");
jgen.writeEndObject();
}
}
class Child {
private String Name;
public String getName() { return Name; }
public void setName(String name) { Name = name; }
}
Child
それが API の一部であり、変更できないクラスであると仮定します。Child
クラスのデフォルトのシリアライゼーションを使用するようにカスタムシリアライザーを変更して、変更時Child
にカスタムシリアライザーを変更する必要がないようにする方法はありますか?