【发布时间】:2018-06-27 10:14:09
【问题描述】:
假设我有以下课程:
class MyClass {
private Date dateToBeCustomeSerialized;
private Date dateToBeDefaultSerialized;
}
在我的 Spring Boot 应用程序中,我需要将每个 Date 对象序列化为 String。为此目的并避免在任何地方插入@JsonSerializer,我在应用程序级别引入了一个自定义序列化器。
问题是我想避免在名称(不是值)dateToBeDefaultSerialized 的字段上使用自定义序列化程序,但我似乎找不到这样做的方法。
这就是我的自定义“全局”Date Serializer 的样子:
@Bean
@Primary
public ObjectMapper serializingObjectMapper() {
ObjectMapper objectMapper = new ObjectMapper();
SimpleModule module = new SimpleModule();
module.addSerializer(Date.class, new DateSerializer());
objectMapper.registerModule(module);
return objectMapper;
}
public class DateSerializer extends JsonSerializer<Date> {
@Override
public void serialize(Date value, JsonGenerator gen, SerializerProvider serializers) throws IOException, JsonProcessingException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String date = sdf.format(value);
gen.writeString(date);
}
}
是否有使用默认序列化程序序列化名称 dateToBeDefaultSerialized 的属性?
【问题讨论】:
-
在 Spring Boot 应用程序中,您可以使用属性更改杰克逊日期格式化程序:
spring.jackson.date-format=yyyy-MM-dd然后编写自定义序列化程序以修改“dateToBeDefaultSerialized”字段的行为
标签: java spring-boot serialization jackson