2015-03-13 55 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());   
     }   
    }; 
}