2015-06-16 92 views
3

關於spring boot 1.2.3.RELEASE with fasterxml將LocalDate字段序列化和反序列化爲iso日期格式化字符串的正確方法是什麼?Spring Boot LocalDate字段序列化和反序列化

我已經試過:

spring.jackson.serialization.write-日期-AS-時間戳:假的application.properties文件,

包括項目傑克遜的數據類型,jsr310,然後使用

@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")註釋

@DateTimeFormat(iso=ISO.DATE)註釋,

加入Jsr310DateTimeForm atAnnotationFormatterFactory as formatter with:

@Override public void addFormatters(FormatterRegistry registry) { registry.addFormatterForFieldAnnotation(new Jsr310DateTimeFormatAnnotationFormatterFactory()); }

以上都沒有幫助。

回答

13

編譯( 「com.fasterxml.jackson.datatype:傑克遜 - 數據類型-jsr310」) 中的build.gradle ,然後按照說明幫助:

@JsonDeserialize(using = LocalDateDeserializer.class) 
@JsonSerialize(using = LocalDateSerializer.class) 
private LocalDate birthday; 
+1

這爲我修好了。當我升級到使用1.3.0.BUILD.SNAPSHOT版本的spring引導時,我遇到了反序列化問題。 –

+0

你能指定你的解決方案嗎? –

+0

是的,您需要com.fasterxml.jackson.datatype:jackson-datatype-jsr310依賴關係,然後您可以在LocalDateSerializer中使用'@ JsonDeserialize' @ JsonSerialize'註釋與LocalDate字段類似。 – aycanadal

1

如果你想使用自定義的Java日期格式化程序,請添加@JsonFormat註釋。

@JsonFormat(pattern = "dd/MM/yyyy") 
@JsonDeserialize(using = LocalDateDeserializer.class) 
@JsonSerialize(using = LocalDateSerializer.class) 
private LocalDate birthdate;* 
2

實際上,如果您只是在pom.xml中指定依賴關係,它就可以工作。

有了這個,我所有的領域LOCALDATE自動使用ISO格式,無需加以註釋:

<!-- This is enough for LocalDate to be deserialized using ISO format --> 
<dependency> 
    <groupId>com.fasterxml.jackson.datatype</groupId> 
    <artifactId>jackson-datatype-jsr310</artifactId> 
</dependency> 

測試在春季啓動1.5.7。