问题背景:

云计算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

二、测试类

 1 package com.example.myspring.transfer;
 2
 3 import com.example.myspring.App;
 4 import com.fasterxml.jackson.core.JsonProcessingException;
 5 import com.fasterxml.jackson.databind.ObjectMapper;
 6 import org.junit.Test;
 7
 8 import java.io.IOException;
 9 import java.util.Arrays;
10 import java.util.HashMap;
11 import java.util.Map;
12
13 public class JacksonTest {
14
15     private ObjectMapper objectMapper = new ObjectMapper();
16
17     Map map = new HashMap();
18
19     @Test
20     public void toJsonTest1() throws JsonProcessingException {
21         // 多种类型可以先封装为Map
22         map.put("alibaba", new App());
23         map.put("tengxun", Arrays.asList("weixin", "wangzherongyao"));
24         map.put("hugh", null);
25         map.put("DOU", "DOU");
26         System.out.println(objectMapper.writeValueAsString(map));
27         // {"alibaba":{},"DOU":"DOU","tengxun":["weixin","wangzherongyao"],"hugh":null}
28     }
29
30     @Test
31     public void toJsonTest2() throws IOException {
32         // 新加非类Stu属性six,且值为null,依然可以被识别
33         String likeStu = "{\"sto\":\"001\",\"name\":\"xx\", \"six\":null}";
34         Map<String, Object> mock = objectMapper.readValue(likeStu, Map.class); // {"sto":"001","name":"xx","six":null}
35         System.out.println(objectMapper.writeValueAsString(mock));
36     }
37
38     public static class Stu{
39
40         private String sto;
41         private String name;
42
43         public Stu(String sto, String name) {
44             this.sto = sto;
45             this.name = name;
46         }
47
48         public String getSto() {
49             return sto;
50         }
51
52         public void setSto(String sto) {
53             this.sto = sto;
54         }
55
56         public String getName() {
57             return name;
58         }
59
60         public void setName(String name) {
61             this.name = name;
62         }
63     }
64 }

测试结果:

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

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

三、总结

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

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

转载于:https://www.cnblogs.com/Hughzm/p/9399068.html

jackson 问题定位相关推荐

  1. 有趣的Hack-A-Sat黑掉卫星挑战赛——定位卫星Jackson

    国家太空安全是国家安全在空间领域的表现.随着太空技术在政治.经济.军事.文化等各个领域的应用不断增加,太空已经成为国家赖以生存与发展的命脉之一,凝聚着巨大的国家利益,太空安全的重要性日益凸显[1].而 ...

  2. 再爆安全漏洞,这次轮到Jackson了,竟由阿里云上报

    ✍前言 你好,我是YourBatman. 今天中午收到我司安全部发了一封邮件:Jackson存在安全漏洞.查了一下,这件事并不算很新鲜了(已经过了10天的样子),本文来聊聊吧. 说起来还蛮戏剧化:阿里 ...

  3. Spring Boot 微服务性能下降九成!使用 Arthas 定位根因

    作者 | 王瑞显  掌门教育基础架构部研发工程师 来源|阿里巴巴云原生公众号 背景 接收到公司业务部门的开发反馈,应用在升级公司内部框架后,UAT(预生产)环境接口性能压测不达标. 升级前压测报告: ...

  4. 【SpringMVC】从Fastjson迁移到Jackson,以及对技术选型的反思

    为什么要换掉fastjson 直接原因是fastjson无法支持注解形式的自定义序列化和反序列化,虽然其Github上的Wiki上说明是支持的.但是实测结果表明:Test类的序列化被fastjson的 ...

  5. 使用Jackson将一个对象转换成一个JSON字符串

    由于ajax的流行,在程序中使用了越来越多的json来进行数据的传输,而Jackson可以将一个普通的java对象转换成一个json的字符串,帮助程序员进行前后端数据的传输. 首先需要导入程序依赖的j ...

  6. jackson 驼峰注解_jackson 常用注解,比如忽略某些属性,驼峰和下划线互转

    一般情况下使用JSON只使用了java对象与字符串的转换,但是,开发APP时候,我们经常使用实体类来做转换:这样,就需要用到注解: Jackson默认是针对get方法来生成JSON字符串的,可以使用注 ...

  7. 面试被问:Selenium元素定位不到问题,如何回答?

    1.maven有什么作用? 最常用的maven相关功能大概以下几种: a. 管理jar依赖 b. 构建项目(打包.编译等) c. 发布项目(共享.上传至服务器,供他人使用) Maven用配置文件的方式 ...

  8. JVM 性能调优实战之:使用阿里开源工具 TProfiler 在海量业务代码中精确定位性能代码...

    本文是<JVM 性能调优实战之:一次系统性能瓶颈的寻找过程> 的后续篇,该篇介绍了如何使用 JDK 自身提供的工具进行 JVM 调优将 TPS 由 2.5 提升到 20 (提升了 7 倍) ...

  9. 借助Jackson的JsonTypeInfo注解实现多态类的解析

    一.问题背景 Jackson框架对json字段的序列化和反序列化默认策略是根据getter和setter方法,去掉get和set,再把首字母小写,便找到了对应的字段.通常情况,我们都是对普通的POJO ...

最新文章

  1. 提高性能的Varnish缓存方案
  2. 单片机自学多久可以成功?学单片机需要什么基础知识?
  3. 从3D人脸到自动驾驶,CVPR2020十个顶级开源数据集
  4. 使用Mysql ID自增长时 在Mapper的insert里添加对应的代码
  5. Java 10更新汇总,新的编译器通吃主流编程语言
  6. JavaWeb:HttpServletResponse和HttpServletRequest
  7. 图像处理常用边缘检测算子
  8. 如何使用 controllerExtensions 给 SAP Fiori Elements List Report 的表格注册事件响应函数
  9. java 前端导出exvel_使用纯前端做的Excel导出了解一下
  10. 看完这篇文章保你面试稳操胜券——React篇
  11. Linux 退出vi编辑模式
  12. python tkinter下载器_下载小说还要去找网站?Python使用tkinter打造一个小说下载器...
  13. 关于c语言循环的格式,关于for循环的格式
  14. 如何在Mac上添加密码提示?
  15. 海康rtsp抓包分析
  16. TransCAD实用技术梗概
  17. DWG 、DXF格式互转、CAD版本转换,记住一个就能快速提高你的工作效率!
  18. 对口升学计算机基础知识教案,教案河北省计算机专业对口升学讲义--计算机基础知识部分.ppt...
  19. 主成分分析(PCA)原理、步骤
  20. 8类网线利弊_八类网线你用过吗?与六类、七类等网线有啥区别?

热门文章

  1. 《微信公众平台开发最佳实践》——第3章 基 础 接 口 3.1 接收用户消息
  2. Oracle 维护数据的完整性 一 索引
  3. Linux C下实现线程池
  4. Citrix WebInterface 安装指导
  5. 一个很好的练听力的网站
  6. html导入错误 wordpress,纯代码为WordPress压缩前端html代码 附BUG修复
  7. android网络质量,基于Android的移动通信网络质量信息系统的设计与开发
  8. matlab 计算大型距离方阵,distance matrix
  9. nacos 配置_阿里巴巴 Nacos 分布式配置中心原理
  10. VS2015占内存大吗?_手机是6GB运行内存,何为后台却显示3G内存?