引言

上一篇博客《XML模板解析————Dom4j解析xml案例分析》简单讲解了关于xml模板的解析,使用到了dom4j,这篇文章其实算是个姊妹篇,都是对于目前工作中的一些任务,如xml、json相互解析所涉及到的知识。

但是相对于xml而言,我更希望通过这篇博客能够稍微全面的学习一下jackson。因为之前用过的相关类库是国产的fastjson,虽然简单的操作还可以,但是最近发现远比jackson的功能还是差远了。虽然fastjson在性能方面上较为优秀,但是jackson本身非常稳定,并且功能相当齐全,历史也较为久远,而且jackson也是Spring Boot对于json解析的默认推荐。如果你的项目是Spring Boot,不需要引入任何的额外配置即可完成对json的处理操作,真是又强大,又好用。

一、ObjectMapper类

ObjectMapper类是Jackson库的主要类。它提供了一些功能将Java对象匹配JSON结构,反之亦然。它使用JsonParser和JsonGenerator的实例实现JSON实际的读/写。

ObjectMapper是可以反复使用的对象。

二、JSON字符串转POJO对象

    @Testpublic void jsonStrToJavaBean() throws JsonParseException, JsonMappingException, IOException {String stuJsonStr = "{\"name\" : \"Tom\", \"age\" : 25}";ObjectMapper mapper = new ObjectMapper();Student stu = mapper.readValue(stuJsonStr, Student.class);System.out.println(stu);String stuStr = mapper.writeValueAsString(stu);System.out.println(stuStr);}

执行结果:

com.group.coursesystem.util.JsonTest$Student@167fdd33
{"name":"Tom","age":25}

三、对象序列化

对象序列化指的是将POJO对象保存到文件中,文件以".json"结尾,并且要能够从json文件中读出对象。

将对象序列化到json文件中:

    @Testpublic void convertBeanAndJsonFile() throws JsonGenerationException, JsonMappingException, IOException {ObjectMapper mapper = new ObjectMapper();Student stu = new Student("Milly", 23);mapper.writeValue(new File(stu.getName() + ".json"), stu);}

执行结果:

将json文件读出到Bean中:

    @Testpublic void jsonFileToBean() throws JsonParseException, JsonMappingException, IOException {ObjectMapper mapper = new ObjectMapper();Student stu = mapper.readValue(new File("Milly.json"), Student.class);System.out.println(stu);}

执行结果:

[name = Milly, age = 23]

四、数据绑定

Jackson数据绑定分为简单数据绑定完全数据绑定。

4.1 简单数据绑定

简单数据绑定是指JSON映射到Java核心数据类型,如String 、Map、List等。

JSON类型 Java类型
object LinkedHashMap<String,Object>
array ArrayList<Object>
string String
complete number Integer, Long or BigInteger
fractional number Double / BigDecimal
true | false Boolean
null null

示例代码:

    @Testpublic void simpleDataBind() throws JsonGenerationException, JsonMappingException, IOException {ObjectMapper mapper = new ObjectMapper();boolean isStudent = true;int[] nums = {1, 3, 5, 7, 9};Student Jerry = new Student("Jerry", 26);Map<String, Student> stuMap = new HashMap<>();stuMap.put("studentObj", Jerry);Map<String, Object> dataMap = new HashMap<>();dataMap.put("studentName", Jerry.getName());dataMap.put("studentAge", Jerry.getAge());dataMap.put("Jerry", Jerry);dataMap.put("stuMap", stuMap);dataMap.put("nums", nums);dataMap.put("isStudent", isStudent);// -----------------序列化为json文件------------------mapper.writeValue(new File("dataMap.json"), dataMap);// -------------------从json文件中读出各个对象----------------Map<String, Object> readDataMap = mapper.readValue(new File("dataMap.json"), Map.class);System.out.println(readDataMap);System.out.println(readDataMap.get("Jerry"));System.out.println(readDataMap.get("stuMap"));System.out.println(readDataMap.get("nums"));System.out.println(readDataMap.get("isStudent"));}

执行结果:

dataMap.json文件内容(原始形式为排列成一行,下图为原数据手动格式化后的结果):

控制台输出:

4.2 完全数据绑定

完全数据绑定指JSON映射到任何Java对象。

参考二、三节。

Jackson快速入门相关推荐

  1. SpringBoot系列: RestTemplate 快速入门

    ==================================== 相关的文章 ==================================== SpringBoot系列: 与Sprin ...

  2. 深入理解 Redis Template及4种序列化方式__spring boot整合redis实现RedisTemplate三分钟快速入门

    概述 使用Spring 提供的 Spring Data Redis 操作redis 必然要使用Spring提供的模板类 RedisTemplate, 今天我们好好的看看这个模板类 . RedisTem ...

  3. SpringBoot约定大于配置的特性解读 SpringBoot快速入门

    SpringBoot约定大于配置 Spring官方网站本身使用Spring框架开发,随着功能以及业务逻辑的日益复杂,应用伴随着大量的XML配置文件以及复杂的Bean依赖关系.随着Spring 3.0的 ...

  4. Spring MVC 教程,快速入门,深入分析

    目录  转载自:http://elf8848.iteye.com/blog/875830 资源下载: Spring_MVC_教程_快速入门_深入分析V1.1.pdf 点击打开链接 SpringMVC核 ...

  5. 带你快速入门RabbitMQ(附思维导图,案例代码)

    RabbitMQ 1.初识MQ 1.1.同步和异步通讯 微服务间通讯有同步和异步两种方式: 同步通讯:就像打电话,需要实时响应. 异步通讯:就像发邮件,不需要马上回复. 两种方式各有优劣,打电话可以立 ...

  6. Javaweb(AJAX快速入门)

    中哈喽丫各位本次讲jweb的(AJAX快速入门&&AJAX实现分页) 好了直接进入主题 在进入主题前看看本次思维导图 ==========================jQuery之 ...

  7. Redis学习笔记①基础篇_Redis快速入门

    若文章内容或图片失效,请留言反馈.部分素材来自网络,若不小心影响到您的利益,请联系博主删除. 资料链接:https://pan.baidu.com/s/1189u6u4icQYHg_9_7ovWmA( ...

  8. 零基础快速入门SpringBoot2.0教程 (三)

    一.SpringBoot Starter讲解 简介:介绍什么是SpringBoot Starter和主要作用 1.官网地址:https://docs.spring.io/spring-boot/doc ...

  9. web框架:Iris快速入门

    web框架:Iris快速入门 1 介绍及安装 介绍 Iris是一款用Go开发的web应用框架,被称为速度最快的Go后端开发框架. 官网地址:https://www.iris-go.com/ 中文教程地 ...

最新文章

  1. 11月最佳机器学习开源项目Top10!
  2. mysql大于等于怎么写_数据库中大于等于0小于等于100怎样表达
  3. C 语言编程 — 变量和常量
  4. HashMap的存储过程
  5. 日志分析平台ELK部署初学
  6. 2021 整理的最全学习资源,送给每一个努力着的人
  7. spring与struts2整合出现错误HTTP Status 500 - Unable to instantiate Action
  8. 移动端页面兼容性问题解决方案整理(一)
  9. homebrew安装失败的解决方案
  10. a proxy service
  11. win10扬声器没有声音但插入耳机有声音
  12. java closed_Java开发网 - ZipFile closed是什么错误?
  13. 最细RGB颜色表,建议收藏
  14. Unity3D 未挂载脚本自动初始化
  15. Linux技巧--删除某列
  16. prometheus的401、403报错处理
  17. MATLAB导入mat文件的方法
  18. 计算机三维造型 试题,2012上图杯三维建模试题要求
  19. c++ GDI 中SelectObject使用方法和注意事项
  20. 计算机考研有哪些值得推荐的院校?能否具体讲讲?

热门文章

  1. 树的结构 数据结构_段树| 数据结构
  2. golang的new函数_new()和make()函数以及Golang中的示例
  3. 案例:Redis 问题汇总和相关解决方案
  4. 面经 | 我是如何拿到阿里offer的?附面试题+视频
  5. 【MATLAB】求点到多边形的最短距离
  6. CentOS 8安装并配置NFS服务
  7. oracle数据库物理结构包含,Oracle - 数据库物理结构
  8. php windows 64下载地址,VSCode Windows 64位 下载
  9. layui tree 加载慢_图片太多,加载慢,我用了layui里的方式,放在服务器后还是太慢!怎么解决???有没有什么优化的技巧???...
  10. 安卓图标_干货 | 安卓界面系统规范