2015-06-16 50 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。