Jackson:InvalidFormatException:无法从字符串值构造java.util.Date的实例
根据文件,这很简单 我的POJO字段如下所示:Jackson:InvalidFormatException:无法从字符串值构造java.util.Date的实例,java,json,date,serialization,jackson,Java,Json,Date,Serialization,Jackson,根据文件,这很简单 我的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 setT
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;
}
}
2018-10-30 12:44:34.270
我试着把它和杰克逊联系起来,就像这样:
ObjectMapper mapper = new ObjectMapper();
Message message = mapper.readValue(message, Message.class);
传入日期字符串如下所示:
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;
}
}
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'")
不知道我还能做什么。我不能改变传入的格式,所以这是我必须接受的
提前感谢。问题不在您预期的范围内: JSON输入中的名称
时间戳
{ "timestamp": "2018-10-30 12:44:34.270" }
只是与Java类消息中的名称\u timestamp
不匹配
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss.SSS")
private Date _timestamp;
有几种替代方法可以使其匹配:
- 在JSON输入中,将“时间戳”更改为“时间戳”
Date\u时间戳中代码>至<代码>日期时间戳代码>
(并相应地使用getter和setter更改代码)
@JsonProperty(“timestamp”)
到您的日期\u时间戳代码>定义
尝试使用@JsonFormat(shape=JsonFormat.shape.STRING,pattern=“yyyy-MM-dd'HH:MM:ss.SSS”)将日期更改为LocalDateTime@TridevChaudhary结果为:com.fasterxml.jackson.databind.JsonMappingException:无法从字符串值('2018-10-30 13:13:16.988')实例化类型[simple type,class java.time.LocalDateTime]的值;在[Source:(String)](通过引用链:com.me.model.Message[“timestamp”])没有单个字符串构造函数/工厂方法。您可能必须编写自定义反序列化程序。检查此问题,我无法重现您的问题。使用
Message
类和JSON输入{“\u timestamp”:“2018-10-30 12:44:34.270”}
对我来说效果很好。你需要使用\u timestamp
,而不是timestamp
。谢谢你的帮助。如果错误没有那么误导,那就太好了。