根据文档,非常简单。
我的POJO字段如下:
public class Message {
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss.SSS")
private Date _timestamp;
public Date getTimestamp() {
return _timestamp;
}
public void setTimestamp(Date timestamp) {
this._timestamp = timestamp;
}
}
我尝试像这样用Jackson映射它:
ObjectMapper mapper = new ObjectMapper();
Message message = mapper.readValue(message, Message.class);
传入的日期字符串如下所示:
2018-10-30 12:44:34.270
我收到以下错误:
com.fasterxml.jackson.databind.exc.InvalidFormatException: Can not construct instance of java.util.Date from String value '2018-10-30 12:44:34.270': not a valid representation (error: Failed to parse Date value '2018-10-30 12:44:34.270': Can not parse date "2018-10-30 12:44:34.270": not compatible with any of standard forms ("yyyy-MM-dd'T'HH:mm:ss.SSSZ", "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", "EEE, dd MMM yyyy HH:mm:ss zzz", "yyyy-MM-dd"))
我尝试了以下操作,但错误没有改变:
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss.SSSZ")
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSZ")
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")
不确定我还能做什么。我无法更改传入的格式,所以这是我必须忍受的。
谢谢。
答案 0 :(得分:1)
问题不在您预期的位置:
JSON输入中的名称timestamp
{ "timestamp": "2018-10-30 12:44:34.270" }
与您的Java类_timestamp
Message
根本不匹配
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss.SSS")
private Date _timestamp;
有几种方法可以使其匹配:
"timestamp"
更改为"_timestamp"
Date _timestamp;
更改为Date timestamp;
@JsonProperty("timestamp")
您的Date _timestamp;
定义