将字符串日期从json转换为Java LocalDate

时间:2015-11-21 01:54:04

标签: spring-mvc java-8

我使用弹簧靴和弹簧4。

information = ' '.join(information)

我尝试使用Java 8 LocalDate。

在json中我有

的日期
  

生日:" 1969-12-29"

在此字段的服务器端,我有

@EntityScan(basePackageClasses = {ServerApplication.class, Jsr310JpaConverters.class})
@SpringBootApplication
@EnableCaching
public class ServerApplication {

    public static void main(String[] args) {
        SpringApplication.run(ServerApplication.class, args);
    }
}

我收到此错误

  

org.springframework.http.converter.HttpMessageNotReadableException:   无法读取文档:无法实例化类型的值[简单   类型,类java.time.LocalDate]来自String值(' 1969-12-29');没有   单字符串构造函数/工厂方法

修改

通过ajax发送

@DateTimeFormat(iso=DateTimeFormat.ISO.DATE)
private LocalDate birthdate;

控制器休息班

public class LodgerInformationDto {
    private Long lodgerId;
    private String firstName;
    private String lastName;
    @DateTimeFormat(iso=DateTimeFormat.ISO.DATE)
    private LocalDate birthdate;
}

有这种依赖关系:com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.6.3

application.properties中的这一行 spring.jackson.serialization.write-日期-AS-时间戳=假

那工作。

1 个答案:

答案 0 :(得分:4)

@DateTimeFormat用于模型属性(命令对象),而不是JSON主体。

从你的问题,

  

在json中我有

的日期

您似乎将日期作为请求正文的一部分提交,如JSON。

处理JSON反序列化的过程完全不同。通常情况下,这是MappingJackson2HttpMessageConverter,假设您在类路径上有杰克逊。

为了与Jackson合作,您需要一个支持Java 8类型的Module。有this onethis one。这些知道如何将JSON内容反序列化为Java 8日期时间类型。

您可以使用@JsonFormat提供日期格式。