ObjectMapper采坑记及源码分析

归志宁无五亩园,读书本意在元元。这篇文章主要讲述ObjectMapper采坑记及源码分析相关的知识,希望能为你提供帮助。

ObjectMapper采坑记及源码分析

文章图片

问题描述【ObjectMapper采坑记及源码分析】当两个环境共享一个私服时,一个环境的先发布,拉去最新代码;另外一个环境没有发布,没有发布的环境,代码里面没有包含传过来的属性,就会报错。
问题跟踪 跟踪1
ObjectMapper采坑记及源码分析

文章图片

上面这个代码,就是一个环境发布拉去最新的代码,另外一个环境没有发布,导致没有相关属性。
跟踪2
ObjectMapper采坑记及源码分析

文章图片

把上面objMap的注释去掉,这种情况会执行成功,因为设置了属性不存在,不报异常的情况。
源码分析
ObjectMapper采坑记及源码分析

文章图片

1、根据英文说明,默认是true,只要属性不存在就会抛异常,平常开发的时候一般设置为false。
2、在进行设计编码的时候,要考虑到这个类的配置及可能的异常
ObjectMapper objectMapper = new ObjectMapper();
//这个是序列化对象所有的属性
objectMapper.setSerializationInclusion(Include.ALWAYS);
//这个是没有属性时的设置
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES,false);
//空对象的时候,不要抛异常
objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
//时间的需要自己去转化,默认是时间轴
objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
objectMapper.setDateFormat(new SimpleDateFormat(" yyyy-MM-dd HH:mm:ss" ))
总结1、平常在进行开发设计的时候,尤其是公共的类,有几个模块用到,这个时候增加属性和删除属性,要充分的测试,对调用的api也要仔细查看。
2、平时对调用的api,虽然有坑,但是肯定有解决的办法,不要一碰到坑就换种api,说不定换的api也是有坑的,再一个还会增加研发时间,得不偿失。

    推荐阅读