jackson--java代码中实现序列化和反序列化的工具类

一,Spring-Boot框架自身默认就引用了jackson,如果你在自己的开发项目中再次引用,就会有冲突。然而,JVM 不会告诉你是引用有冲突,而是直接给你一个类型有问题的提示。意思就是我只能告诉你类型有问题,具体的你自己查吧。IDEAL 作为一个开发工具,在这点上面也没有做出点贡献。Java这个生态缺陷还是很大的!!!

  spriing-boot 默认引用

  自己项目的pom中找到:org.springframework.boot , 并点击进去。 

  <parent>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-parent</artifactId>
  <version>2.0.6.RELEASE</version>
  <relativePath/>
  </parent>

  然后再找:spriing-boot-dependencies ,并点击进去

  <parent>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-dependencies</artifactId>
  <version>2.0.6.RELEASE</version>
  <relativePath>../../spring-boot-dependencies</relativePath>
  </parent>

  然后就可以看到spring-boot 对jackson 的引用,如下图

  <dependency>
  <groupId>com.fasterxml.jackson</groupId>
  <artifactId>jackson-bom</artifactId>
  <version>${jackson-bom.version}</version>
  <type>pom</type>
  <scope>import</scope>
  </dependency>

 

二,fastJson和jackson转json的区别

首先举个fastJson和jackson转json的例子,然后对比两种的区别

例子1:

{
"statusCode": 800,
"returnObj": {
"hzOrderId": 14,
"orderId": 2015111311521900000,
"orderSendPlanId": 67
}
}
1、jackson-ObjectMapper转json
上面是一个 json字符串,有两层, 一层是最外面的,一层是returnObj 
这种方式转换json,特点是兼容性高,对于部分特殊字符也能转换成功。 而且:转换的时候是逐级转换,也就是说,无论你json字符串有多少层次,他都会转换成Object或者Map


上面的转换结果: returnObj里面也会被转成Map


2、fastJson转换,这里就简单写一个转换

rest= JSON.parseObject(result, JsonRESTResult.class);
HZorder hz = JsonUtils.fromJson(rest.getReturnObj().toString(), HZorder.class);

这种方式转换,特点: 简单明了,但是对于部分特殊字符无法转换(比如html标签+文件特殊符号),还有个特点:他是直接转换的,而不是逐层转换。 也就是说,针对例子1的json字符串,只会转换最外层为Object, 至于returnObj, 仍然还是json字符串,而不会转换成Map。当你需要直接用的时候,还需要继续转换一次

上一篇:SpringMVC入门学习(十三)----处理JSON数据


下一篇:Jackson 属性自定义命名策略