在我的应用程序中,我添加了 REST。为了测试这些方法,我在数据库中创建了一些基本行。
当我尝试使用带有 ID 的 GET 来获取数据库中的特定行时,我收到了 jackson 异常。
com.fasterxml.jackson.databind.exc.InvalidFormatException: Cannot deserialize value of type `java.util.Date` from String "2019-03-11T10:14:14Z[UTC]": not a valid representation (error: Failed to parse Date value '2019-03-11T10:14:14Z[UTC]': Cannot parse date "2019-03-11T10:14:14Z[UTC]": while it seems to fit format 'yyyy-MM-dd'T'HH:mm:ss.SSSZ', parsing fails (leniency? null))
我尝试制作的对象有一个字段
@Temporal(javax.persistence.TemporalType.TIMESTAMP)
private Date published;
被调用的构造函数是
public something(Date published) {
this.published = published;
}
我在 StackOverflow 问题中读到我应该添加
@JsonType(pattern="")
在“已发布”字段上方,但我似乎无法找到我需要导入的内容才能使该注释起作用。
编辑:多亏了 SHAHAKASH 的回答,我终于设法添加了注释。
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = TimeZone.getDefault(), locale = Locale.getDefault())
但是我对此有两个问题,一个是它不允许我保留时区和语言环境。所以删除那些让我的程序运行
@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"
显然意味着我的格式是错误的。我很难找到正确的日期格式。
试试这个模式 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
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句