Java Jackson为X类型的所有字段添加自定义序列化程序

Java Jackson为X类型的所有字段添加自定义序列化程序,java,json,serialization,jackson,Java,Json,Serialization,Jackson,我有一门课是这样的: public class Foo { private Integer id; private FooB fooA; private boolean isB; private boolean isC; private int age; private LocalDate date1; private LocalDate date2; private LocalDate date3; private Loc

我有一门课是这样的:

public class Foo {
    private Integer id;
    private FooB fooA;
    private boolean isB;
    private boolean isC;
    private int age;
    private LocalDate date1;
    private LocalDate date2;
    private LocalDate date3;
    private LocalDate date4;
}
我想以本机方式序列化这个类中的所有内容,除了
LocalDate
字段的。我有一个这样的自定义序列化程序:

public class LocalDateSerializer extends JsonSerializer<LocalDate> {
    @Override
    public void serialize(LocalDate localDate, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException {
        //serialize
    }
}

我的问题是,我能把它合并成一个类级别的注释吗?

我找不到一个在类中只使用一个注释的解决方案。可能注释每个字段是您能得到的最好结果


另一种方法是以编程方式配置
ObjectMapper

ObjectMapper om = new ObjectMapper();
JavaTimeModule module = new JavaTimeModule();
module.addSerializer(LocalDate.class, new LocalDateSerializer(DateTimeFormatter.ofPattern("dd/MM/yyyy")));
om.registerModule(module);
addSerializer
方法映射所有
LocalDate
字段以使用指定的序列化程序。在上面的示例中,我使用了内置的
com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer
DateTimeFormatter
,但当然,您可以用任何想要的序列化程序(包括自定义序列化程序)替换它


如果您不想(或不能)配置
ObjectMapper
,那么在每个字段上使用注释似乎是最好的解决方案。

添加自定义模块似乎是一种方法@MaxPower这不是我要问的问题。我已经编写了一个自定义序列化程序。我在问有关注释的问题
ObjectMapper om = new ObjectMapper();
JavaTimeModule module = new JavaTimeModule();
module.addSerializer(LocalDate.class, new LocalDateSerializer(DateTimeFormatter.ofPattern("dd/MM/yyyy")));
om.registerModule(module);