问题背景:

云计算Pass平台版本升级,导致引用的jackson的包直接由1.*升级为2.* 。在版本1.*中对于字段名与实际json不符的直接忽略了,而在2.*中则会报错。诸如此类,有较大差异,需要一一排查


一、配置maven依赖

    <dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.9.5</version>
</dependency> 

https://mvnrepository.com

二、测试类

 package com.example.myspring.transfer;

 import com.example.myspring.App;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.junit.Test; import java.io.IOException;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map; public class JacksonTest { private ObjectMapper objectMapper = new ObjectMapper(); Map map = new HashMap(); @Test
public void toJsonTest1() throws JsonProcessingException {
// 多种类型可以先封装为Map
map.put("alibaba", new App());
map.put("tengxun", Arrays.asList("weixin", "wangzherongyao"));
map.put("hugh", null);
map.put("DOU", "DOU");
System.out.println(objectMapper.writeValueAsString(map));
// {"alibaba":{},"DOU":"DOU","tengxun":["weixin","wangzherongyao"],"hugh":null}
} @Test
public void toJsonTest2() throws IOException {
// 新加非类Stu属性six,且值为null,依然可以被识别
String likeStu = "{\"sto\":\"001\",\"name\":\"xx\", \"six\":null}";
Map<String, Object> mock = objectMapper.readValue(likeStu, Map.class); // {"sto":"001","name":"xx","six":null}
System.out.println(objectMapper.writeValueAsString(mock));
} public static class Stu{ private String sto;
private String name; public Stu(String sto, String name) {
this.sto = sto;
this.name = name;
} public String getSto() {
return sto;
} public void setSto(String sto) {
this.sto = sto;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
}
}
}

测试结果:

(1)未能复现项目中报错,推断与版本号有关联

(2)2.9.5  版本可以解析出以上结果;但是切换到 2.7.0 或者 以下版本,又报不同的错

三、总结

不同版本的jackson存在较大差异,坑较多

【参考】https://www.jianshu.com/p/4bd355715419

最新文章

  1. EBS提交请求出现REP-3000错误
  2. CSU 1660 K-Cycle(dfs判断无向图中是否存在长度为K的环)
  3. java中的数据结构 --- 集合
  4. js滚动加载插件
  5. Nginx的fastcgi_cache
  6. 【Hibernate 5】继承映射配置及多态查询
  7. 错误源:WebForms UnobtrusiveValidationMode requires a ScriptResourceMapping for &#39;jquery&#39;. Please add a ScriptResourceMapping named jquery(case-sensitive).
  8. linux定时器用法
  9. Business Analysis and Essential Competencies
  10. Python调用C/C++动态链接库的方法详解
  11. spring整合mybatis错误:Could not autowire field: com.kjczwl.ssm.service.ItemsService com.kjczwl.ssm.controller.ItemsController.itemsservice;
  12. vmware安装centOs操作系统配置网络的一系列问题
  13. 聊天机器人開發好消息!!DIALOGFLOW與微信的天作之合!!
  14. UDP学习总结
  15. 【转】使用windeployqt.exe进行依赖查找打包
  16. SpringMvc定时器任务
  17. iOS开发-- 设置UIButton的文字显示位置、字体的大小、字体的颜色
  18. 【大数据系列】windows下连接Linux环境开发
  19. java 内存深度解析
  20. 微信小程序教程系列

热门文章

  1. ActiveMQ修改连接的用户名密码
  2. qt opencv 视频分析
  3. Kotlin——关于字符串(String)常用操作汇总
  4. Flutter的flutter_calendar日曆的使用
  5. Es学习第七课, term、terms、match等基本查询语法
  6. 计蒜客NOIP模拟D1T2
  7. MVC模式设计的Web层框架初识
  8. 02.自定义banner、全局配置文件、@Value获取自定义配置、@ConfigurationProperties、profiles配置
  9. 10.VScode Debug——2019年12月12日
  10. 【leetcode】1018. Binary Prefix Divisible By 5