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

作者:轻云_ 时间:2023-11-13 21:12:14 

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);
}

来源:https://blog.csdn.net/qq_33308158/article/details/82703387

标签:Jackson,反序列化
0
投稿

猜你喜欢

  • C#启动进程的几种常用方法

    2023-06-18 04:13:48
  • Flutter禁止手机横屏的简单实现方法

    2022-12-06 19:56:34
  • JAVA中数组从小到大排序的2种方法实例

    2021-10-09 09:46:18
  • Java实例讲解多态数组的使用

    2021-08-30 19:34:46
  • C++实现图书管理系统

    2023-11-03 03:00:35
  • C++双向循环列表用法实例

    2023-07-23 03:58:54
  • C#基础学习系列之Attribute和反射详解

    2022-07-19 17:55:40
  • Android Rreact Native 常见错误总结

    2021-07-11 16:39:59
  • Android activity动画不生效原因及解决方案总结

    2022-12-18 16:31:41
  • C#深浅拷贝的深入解析

    2023-03-28 18:36:28
  • httpwebreqeust读取httponly的cookie方法

    2022-04-19 19:47:05
  • java获取版本号及字节码编译版本方法示例

    2023-06-22 08:44:31
  • SQL Server中的数据复制到的Access中的函数

    2021-10-05 16:06:42
  • java中fastjson生成和解析json数据(序列化和反序列化数据)

    2023-12-08 17:45:24
  • Android获取设备传感器的方法

    2022-10-07 10:50:16
  • Java基本语法之内部类示例详解

    2023-02-06 14:05:32
  • Kotlin方法与Lambda表达式实践使用介绍

    2021-11-07 08:03:04
  • android获取屏幕宽高与获取控件宽高(三种方法)

    2022-07-11 11:25:42
  • Java扩展库RxJava的基本结构与适用场景小结

    2022-12-27 10:03:15
  • springboot整合security和vue的实践

    2021-09-17 20:39:28
  • asp之家 软件编程 m.aspxhome.com