在spring boot 1.2.3.RELEASE with fasterxml什么是将LocalDate字段序列化和反序列化为iso日期格式化字符串的正确方法?
我试过了:
spring.jackson.serialization.write-dates-as-timestamps:在application.properties文件中为false,
在项目中包含jackson-datatype-jsr310,然后使用
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")
注释
和@DateTimeFormat(iso=ISO.DATE)
注释,
将Jsr310DateTimeFormatAnnotationFormatterFactory添加为格式化程序:
@Override public void addFormatters(FormatterRegistry registry){ registry.addFormatterForFieldAnnotation(新 Jsr310DateTimeFormatAnnotationFormatterFactory()); }
以上都没有帮助。
答案 0 :(得分:20)
compile ("com.fasterxml.jackson.datatype:jackson-datatype-jsr310")
在build.gradle中然后按照注释帮助:
@JsonDeserialize(using = LocalDateDeserializer.class)
@JsonSerialize(using = LocalDateSerializer.class)
private LocalDate birthday;
更新:如果您使用的是Spring Boot 2. *,那么依赖关系已经包含在" starters"中。
答案 1 :(得分:4)
实际上,只要在pom.xml中指定依赖项就可以了。
这样,我的所有LocalDate字段都自动使用ISO格式,无需对其进行注释:
<!-- This is enough for LocalDate to be deserialized using ISO format -->
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
</dependency>
在Spring Boot 1.5.7上测试。
答案 2 :(得分:3)
如果要使用自定义Java日期格式化程序,请添加@JsonFormat
注释。
@JsonFormat(pattern = "dd/MM/yyyy")
@JsonDeserialize(using = LocalDateDeserializer.class)
@JsonSerialize(using = LocalDateSerializer.class)
private LocalDate birthdate;*
答案 3 :(得分:0)
在我的Spring Boot 2应用程序中
@JsonFormat
批注。 @DateTimeFormat
注释在对字符串数据进行反序列化时在其他控制器ModelAttribute
中使用。
您可以在同一字段中同时指定两者(如果您在JSON和Thymeleaf模板之间共享DTO,则很有用)
@JsonFormat(pattern = "dd/MM/yyyy")
@DateTimeFormat(pattern = "dd/MM/yyyy")
private LocalDate birthdate;
等级依赖性:
implementation group: 'org.springframework.boot', name: 'spring-boot-starter-json'
我希望这是Spring Boot 2.x应用程序中自定义日期/时间格式所需的全部配置。
对于Spring Boot 1.x应用,请指定其他注释和依赖项:
@JsonFormat(pattern = "dd/MM/yyyy")
@DateTimeFormat(pattern = "dd/MM/yyyy")
@JsonDeserialize(using = LocalDateDeserializer.class)
@JsonSerialize(using = LocalDateSerializer.class)
private LocalDate birthDate;
// or
@JsonFormat(pattern = "dd/MM/yyyy HH:mm")
@DateTimeFormat(pattern = "dd/MM/yyyy HH:mm")
@JsonDeserialize(using = LocalDateTimeDeserializer.class)
@JsonSerialize(using = LocalDateTimeSerializer.class)
private LocalDateTime birthDateTime;
implementation group: 'com.fasterxml.jackson.datatype', name: 'jackson-datatype-jsr310', version: '2.9.8'