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

 更新时间:2021年08月10日 09:49:46   作者:轻云_  
这篇文章主要介绍了使用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-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字段比较多,而我们对象只需要部分字段,这时反序列化时会报错,可以在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(){return myproperty};
 void setMyproperty(String value){myproperty = value};
}
interface InfC {
 String getMyproperty();
 void setMyproperty(String value); 
}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java实现两人五子棋游戏(五) 判断是否有一方胜出

    Java实现两人五子棋游戏(五) 判断是否有一方胜出

    这篇文章主要为大家详细介绍了Java实现两人五子棋游戏,判断是否有一方胜出,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-03-03
  • 详解使用Spring Security进行自动登录验证

    详解使用Spring Security进行自动登录验证

    本篇文章主要介绍了详解使用Spring Security进行自动登录验证,非常具有实用价值,需要的朋友可以参考下
    2017-09-09
  • 实战指南:Java编写Flink SQL解决难题

    实战指南:Java编写Flink SQL解决难题

    想知道如何利用Java编写Flink SQL解决难题吗?本指南将为您揭示最实用的技巧和策略,让您轻松应对挑战,跟着我们一起探索,让Java和Flink SQL成为您问题解决的得力助手!
    2023-12-12
  • Java实现动态获取图片验证码的示例代码

    Java实现动态获取图片验证码的示例代码

    这篇文章主要介绍了Java实现动态获取图片验证码的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • 解决 java.lang.NoSuchMethodError的错误

    解决 java.lang.NoSuchMethodError的错误

    这篇文章主要介绍了解决 java.lang.NoSuchMethodError的错误的相关资料,需要的朋友可以参考下
    2017-06-06
  • 详解Java线程池的使用(7种创建方法)

    详解Java线程池的使用(7种创建方法)

    这篇文章主要介绍了详解Java线程池的使用(7种创建方法),线程池的创建⽅式总共包含7种,其中6种是通过Executors创建的,1种是通过ThreadPoolExecutor创建的,今天我们就来详细说一下
    2023-03-03
  • SpringBoot如何获取当前操作用户的id/信息

    SpringBoot如何获取当前操作用户的id/信息

    在一般性的基设需求中,有需要获取当前用户操作记录的情况,也就是说我们需要记录当前用户的信息,如:id、昵称、账号等信息,这篇文章主要介绍了SpringBoot获取当前操作用户的id/信息,需要的朋友可以参考下
    2023-10-10
  • 通过xml配置SpringMVC注解DispatcherServlet初始化过程解析

    通过xml配置SpringMVC注解DispatcherServlet初始化过程解析

    这篇文章主要为大家介绍了通过xml配置SpringMVC注解DispatcherServlet初始化过程解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-10-10
  • spring task @Scheduled注解各参数的用法

    spring task @Scheduled注解各参数的用法

    这篇文章主要介绍了spring task @Scheduled注解各参数的用法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-10-10
  • Java版AI五子棋游戏

    Java版AI五子棋游戏

    这篇文章主要为大家详细介绍了Java版AI五子棋游戏,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-09-09

最新评论