归志宁无五亩园,读书本意在元元。这篇文章主要讲述ObjectMapper采坑记及源码分析相关的知识,希望能为你提供帮助。
文章图片
问题描述【ObjectMapper采坑记及源码分析】当两个环境共享一个私服时,一个环境的先发布,拉去最新代码;另外一个环境没有发布,没有发布的环境,代码里面没有包含传过来的属性,就会报错。
问题跟踪 跟踪1
文章图片
上面这个代码,就是一个环境发布拉去最新的代码,另外一个环境没有发布,导致没有相关属性。
跟踪2
文章图片
把上面objMap的注释去掉,这种情况会执行成功,因为设置了属性不存在,不报异常的情况。
源码分析
文章图片
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也是有坑的,再一个还会增加研发时间,得不偿失。
推荐阅读
- uniapp UI 设计参考网站
- Android Detail(进程篇-进程内存分配与优先级)
- 鎶ラ敊Failed to install the following SDK components:platforms;android-29 Android SDK Platform 29(
- Android studio .a静态库的生成与调用
- HTTPDNS开源 Android SDK,赋能更多开发者参与共建
- 铻嶄簯鍗虫椂閫氳SDK闆嗘垚 -- 鍥藉唴鍘傚晢鎺ㄩ€侀泦鎴愯俯鍧戠瘒(Android骞冲彴)
- 铻嶄簯鍗虫椂閫氳SDK闆嗘垚 -- FCM鎺ㄩ€侀泦鎴愭寚鍗?Android骞冲彴)
- Smobiler APP开发----TabPageView组件
- uni-app生命周期