【发布时间】:2019-12-16 05:06:54
【问题描述】:
我想在 Spring Boot v1.5.14.RELEASE 应用中实现自定义验证器。首先我创建一个自定义约束注解:
我有这个对象:
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
@SuperBuilder
public class Hotel {
@JsonFormat(pattern = "yyyy-MM-dd")
private OffsetDateTime interactionDurationStart;
@JsonFormat(pattern = "yyyy-MM-dd")
private OffsetDateTime interactionDurationEnd;
}
在 yml 中:
spring:
jackson:
mapper:
DEFAULT_VIEW_INCLUSION: true
serialization:
WRITE_DATES_AS_TIMESTAMPS: false
在我的配置文件中:
@Primary
@Bean
public ObjectMapper objectMapper() {
ObjectMapper objectMapper = new ObjectMapper();
//objectMapper.registerModule(new JavaTimeModule());
SimpleModule simpleModule = new SimpleModule();
simpleModule.addSerializer(OffsetDateTime.class, new JsonSerializer<OffsetDateTime>() {
@Override
public void serialize(OffsetDateTime offsetDateTime, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException {
jsonGenerator.writeString(DateTimeFormatter.ISO_LOCAL_DATE_TIME.format(offsetDateTime));
}
});
objectMapper.registerModule(simpleModule);
return objectMapper;
}
但这是我在 API 响应中看到的
"interactionDurationEnd" : {
"offset" : {
"totalSeconds" : 7200,
"id" : "+02:00",
"rules" : {
"transitionRules" : [ ],
"transitions" : [ ],
"fixedOffset" : true
}
},
【问题讨论】:
标签: java json spring spring-boot jackson