杰克逊无法将日期反序列化

时间:2019-03-13 11:02:24

标签: java mysql rest jackson

在我的应用程序中,我添加了REST。为了测试这些方法,我在数据库中创建了一些基本行。

当我尝试使用带有ID的GET获取数据库中的特定行时,我收到了杰克逊异常。

@Temporal(javax.persistence.TemporalType.TIMESTAMP)
private Date published;

我尝试制作的对象具有一个字段

public something(Date published) {
    this.published = published;
}

被调用的构造函数是

@JsonType(pattern="")

我读了一个StackOverflow问题,我应该添加

@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = TimeZone.getDefault(), locale = Locale.getDefault())

在“已发布”字段上方,但我似乎找不到要导入的注释才能正常工作。

编辑: 感谢SHAHAKASH的回答,我终于设法添加了注释。

@JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss.SSS")

但是,我对此有两个问题,一个是它不允许我保留时区和语言环境。所以删除那些让我的程序运行

Cannot deserialize value of type `java.util.Date` from String "2019-03-11T10:14:14Z[UTC]": expected format "yyyy-MM-dd'T'HH:mm:ss.SSS"

哪个给我错误:

npm install axios

显然是我的格式错误。我在寻找正确的日期格式方面遇到很多麻烦。

1 个答案:

答案 0 :(得分:1)

尝试此模式yyyy-MM-dd'T'HH:mm:ss'Z'

String testDate = "2019-03-11T10:14:14Z[UTC]";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
Date d = sdf.parse(testDate);
System.out.println(d);

输出:

Mon Mar 11 10:14:14 IST 2019