2015-03-13 101 views
21

我正在使用spring引导来创建其他应用程序。我有一个DTO,如下图所示:使用spring引导的json输出中的日期格式

public class Subject { 

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

我使用Spring-Hateos和我的控制器的reurn类型是ResponseEntity >>。我需要以“yyyy-mm-dd”格式显示日期。我对此感到震惊。请帮助我如何实现这一目标。提前致谢。

回答

22

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

你应该做两件事

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

  • 可以比通过注释自定义格式你的吸气法dateOfBirth属性@JsonFormat(pattern="yyyy-MM-dd")

+0

嗨,我有在这里面临的一个问题。以json格式显示的日期少于1天。 – Pramod 2015-03-13 11:40:20

+3

使用Spring Boot 1.3.0进行测试,您似乎不需要'''spring.jackson.serialization.write-dates-as-timestamps'',但仅使用''JsonFormat'''就足够了注释 – ngeek 2015-11-25 21:41:32

+4

有没有办法用所有日期做到这一点,而不必逐一注释? – ephemeralCoder 2016-06-09 15:48:56

36

如果您将Jackson与您的应用程序进行整合以将您的bean序列化为JSON格式的athn,那么您可以使用Jackson偏移量@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

嗨,我在这里面临一个问题。以json格式显示的日期少于1天。 – Pramod 2015-03-13 11:40:25

+0

请发布您存储的价值以及如何?从数据库或其他东西 – 2015-03-13 12:01:03

+0

我从XMLGregorianCalendar格式的肥皂服务检索日期。我已将其转换为java.util.Date,并将其转换为json格式。例如:在将XMLGregorianCalendar对象转换为日期之后,它将在控制台中显示2014-02-11。但在json输出中显示2014-02-10。 – Pramod 2015-03-13 12:15:45

1

如果要更改所有日期的格式,可以添加构建器定制程序。下面是转换日期以ISO 8601的Bean的一个例子:

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