(De)序列化LocalDate:如何准备JSON

时间:2018-03-27 10:20:50

标签: java json

我有一个类,表示有LocalDate字段的数据。

public class Student {
    private String name;
    private LocalDate dob;
    //getters and setters
}

pom.xmljackson-modules-java8,以便Local日期可以反序列化。我无法准备正确的JSON以便能够发送POST。这是:

{ "name" : "John", "dob" : [ 1986::10::06 ] }

在对POST的回复中,我得到Cannot deserialize instance of java.time.LocalDate out of START_ARRAY token。使用注释@JsonFormat(pattern = "yyyy::MM::dd")来装饰字段dob并不起作用。三年前workaround已经出版,但事情可能已经发生变化。

2 个答案:

答案 0 :(得分:0)

根据json值的w3school描述:

  

在JSON中,值必须是以下数据类型之一:

     
      
  • 一个字符串
  •   
  • 一个数字
  •   
  • 一个对象(JSON对象)
  •   
  • 一个数组
  •   
  • 布尔
  •   
  •   

根据此定义,您的json无效,因为[1986::10::06]不是有效值。 您需要将其视为字符串,在其周围添加"个字符而不是方括号。

正确的json必须是

{ "name" : "John", "dob" : "1986::10::06" }

答案 1 :(得分:0)

LocalDate API文档说:

  

ISO-8601日历系统中没有时区的日期,例如   2007-12-03

所以你JSON应该是这样的:

{ "name" : "John", "dob" : "1986-10-06" }