如果我有一个A
类型的POJO字段要序列化为B
类型,我可以通过一对Converter
轻松实现:
@JsonSerialize(converter=ConvA2B.class)
@JsonDeserialize(converter=ConvB2A.class)
private A field;
但是,如果我希望像这样对待所有POJO中的所有该类型的字段怎么办?是否有全局转换器配置?
为了提供一些背景信息,我正在尝试serialize java.time.LocalDateTime
fields as unix timestamps,发现的一种可能的解决方案是使用自定义类型转换器将每个文件转换为java.time.Instant
,例如:
public static class Conv extends StdConverter<LocalDateTime, Instant> {
@Override
public Instant convert(LocalDateTime value) {
return value.toInstant(ZoneOffset.UTC);
}
}
答案 0 :(得分:1)
您可以配置Jackson使用的ObjectMapper
。通常,您可以配置想要序列化某些类型的方式。对于您的具体问题,您可以尝试以下操作:
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
...
private ObjectMapper createObjectMapper() {
final ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new JavaTimeModule());
mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
return mapper;
}
现在,根据您的应用程序设置,您需要在某个地方注入/提供/配置对象映射器。