我是靠谱客的博主 英勇鸭子,最近开发中收集的这篇文章主要介绍使用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-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只支持以下四种

  1. yyyy-MM-dd'T'HH:mm:ss.SSSZ
  2. yyyy-MM-dd'T'HH:mm:ss.SSS'Z'
  3. EEE, dd MMM yyyy HH:mm:ss zzz
  4. 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字段比较多,而我们对象只需要部分字段,这时反序列化时会报错,可以在new ObjectMapper后加上objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);

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

最后

以上就是英勇鸭子为你收集整理的使用Jackson反序列化遇到的问题的全部内容,希望文章能够帮你解决使用Jackson反序列化遇到的问题所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(66)

评论列表共有 0 条评论

立即
投稿
返回
顶部