使用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()); } }; }