使用spring boot在json输出中的日期格式

我正在使用spring boot来创建REST应用程序。 我有一个DTO,如下所示:

public class Subject { private String uid; private String number; private String initials; private Date dateOfBirth; 

我使用Spring-Hateos,我的控制器的reurn类型是ResponseEntity<Resources<Resource>> 。 我需要以“yyyy-mm-dd”格式显示日期。

如果jackson与您的应用程序一起将您的bean序列化为JSON格式,那么您可以使用Jackson anotation @JsonFormat将日期格式化为指定格式。
在您的情况下,如果您需要将日期转换为yyyy-MM-dd格式,则需要在要应用此格式的字段上方指定@JsonFormat

例如 :

 public class Subject { private String uid; private String number; private String initials; @JsonFormat(pattern="yyyy-MM-dd") private Date dateOfBirth; //Other Code } 

来自Docs:

用于配置属性值如何序列化的详细信息的注释。

更多参考文档

希望这可以帮助。

你很可能意味着“yyyy-MM-dd”小后者’m’意味着分钟节。

你应该做两件事

  • application.properties添加spring.jackson.serialization.write-dates-as-timestamps:false这将禁用将日期转换为时间戳,而是使用符合ISO-8601的格式

  • 您可以通过使用@JsonFormat(pattern="yyyy-MM-dd")注释dateOfBirth属性的getter方法来自定义格式

从Spring Boot版本1.2.0.RELEASE开始,有一个属性可以添加到application.properties以便为所有类spring.jackson.date-format设置默认日期spring.jackson.date-format

对于您的日期格式示例,您可以将此行添加到您的属性文件中:

 spring.jackson.date-format=yyyy-mm-dd 

参考https://docs.spring.io/spring-boot/docs/1.2.0.RELEASE/reference/html/common-application-properties.html

如果要更改所有日期的格式,可以添加构建器自定义程序。 以下是将日期转换为ISO 8601的bean示例:

 @Bean public Jackson2ObjectMapperBuilderCustomizer jsonCustomizer() { return new Jackson2ObjectMapperBuilderCustomizer() { @Override public void customize(Jackson2ObjectMapperBuilder builder) { builder.dateFormat(new ISO8601DateFormat()); } }; }