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

时间:2015-03-13 08:08:56

标签: java rest spring-boot spring-hateoas

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

public class Subject {

private String uid;
private String number;
private String initials;
private Date dateOfBirth;

我使用Spring-Hateos,我的控制器的重新类型是ResponseEntity<Resources<Resource<Subject>>>。我需要将日期显示在&#34; yyyy-mm-dd&#34;格式。

4 个答案:

答案 0 :(得分:65)

如果杰克逊与您的应用程序一起将您的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  

}  

来自文档:

  

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

More Reference Doc

希望这有帮助。

答案 1 :(得分:32)

你很可能意味着&#34; yyyy-MM-dd&#34;小后者&#39; m&#39;会暗示分钟节。

你应该做两件事

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

  • 您可以通过使用dateOfBirth

  • 注释@JsonFormat(pattern="yyyy-MM-dd")属性的getter方法来自定义格式

答案 2 :(得分:7)

从Spring Boot版本1.2.0.RELEASE开始,您可以添加一个属性application.properties,为所有类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

答案 3 :(得分:3)

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

<color name="foreground_material_light">#fff</color>