使用Jackson反序列化遇到的问题及解决

网友投稿 2218 2022-12-20

使用Jackson反序列化遇到的问题及解决

使用Jackson反序列化遇到的问题及解决

Jackson反序列化遇到的问题

最近在项目中需要使用Jackson把前台转来的字符转为对象,转换过程中发生了错误,报错如下

​com.fasterxml.jackson.databind.exc.InvalidFormatException: Can not construct instance of java.util.Date from String

value '2018-09-14 15:12:08': not a valid representation (error: Failed to parse Date value '2018-09-14 15:12:08':

Can not parse date "2018-09-14 15:12:08": not compatible with any of standard forms ("yyyy-MM-dd'T'HH:mm:ss.SSSZ",

"yyyy-MM-http://dd'T'HH:mm:ss.SSS'Z'", "EEE, dd MMM yyyy HH:mm:ss zzz", "yyyy-MM-dd"))

原因是需要转换成的目标对象有Date类型的属性,前台传来的是yyyy-MM-dd HH:mm:ss类型

而Jackson只支持以下四种

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

在网上查了许多方法都比较麻烦,我太懒……

发现用两个注解就可以轻松解决

@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")

@jsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")

private Date createTime;

JackSon反序列化时忽略对象中不存在的json字段

如果json字段比较多,而我们对象只需要部分字cmETtCtbXg段,这时反序列化时会报错,可以在new ObjectMapper后加上

objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);

就可以在反序列化时忽略json中多余的字段了。

jackson反序列化失败异常总结

存在冲突的访问器方法,Conflicting setter definitions for property “myproperty”

例如:

class TypeA extends TypeB implements InfC {}

class TypeB {

String myproperty;

String getMyproperty(){returncmETtCtbXg myproperty};

void setMyproperty(String value){myproperty = value};

}

interface InfC {

String getMyproperty();

void setMyproperty(String value);

}

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:idea新建聚合项目并附上标签的详细过程
下一篇:一体化政务服务平台加快(政务一体化平台是什么)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~