Jackson快速入门
引言
上一篇博客《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快速入门相关推荐
- SpringBoot系列: RestTemplate 快速入门
==================================== 相关的文章 ==================================== SpringBoot系列: 与Sprin ...
- 深入理解 Redis Template及4种序列化方式__spring boot整合redis实现RedisTemplate三分钟快速入门
概述 使用Spring 提供的 Spring Data Redis 操作redis 必然要使用Spring提供的模板类 RedisTemplate, 今天我们好好的看看这个模板类 . RedisTem ...
- SpringBoot约定大于配置的特性解读 SpringBoot快速入门
SpringBoot约定大于配置 Spring官方网站本身使用Spring框架开发,随着功能以及业务逻辑的日益复杂,应用伴随着大量的XML配置文件以及复杂的Bean依赖关系.随着Spring 3.0的 ...
- Spring MVC 教程,快速入门,深入分析
目录 转载自:http://elf8848.iteye.com/blog/875830 资源下载: Spring_MVC_教程_快速入门_深入分析V1.1.pdf 点击打开链接 SpringMVC核 ...
- 带你快速入门RabbitMQ(附思维导图,案例代码)
RabbitMQ 1.初识MQ 1.1.同步和异步通讯 微服务间通讯有同步和异步两种方式: 同步通讯:就像打电话,需要实时响应. 异步通讯:就像发邮件,不需要马上回复. 两种方式各有优劣,打电话可以立 ...
- Javaweb(AJAX快速入门)
中哈喽丫各位本次讲jweb的(AJAX快速入门&&AJAX实现分页) 好了直接进入主题 在进入主题前看看本次思维导图 ==========================jQuery之 ...
- Redis学习笔记①基础篇_Redis快速入门
若文章内容或图片失效,请留言反馈.部分素材来自网络,若不小心影响到您的利益,请联系博主删除. 资料链接:https://pan.baidu.com/s/1189u6u4icQYHg_9_7ovWmA( ...
- 零基础快速入门SpringBoot2.0教程 (三)
一.SpringBoot Starter讲解 简介:介绍什么是SpringBoot Starter和主要作用 1.官网地址:https://docs.spring.io/spring-boot/doc ...
- web框架:Iris快速入门
web框架:Iris快速入门 1 介绍及安装 介绍 Iris是一款用Go开发的web应用框架,被称为速度最快的Go后端开发框架. 官网地址:https://www.iris-go.com/ 中文教程地 ...
最新文章
- 11月最佳机器学习开源项目Top10!
- mysql大于等于怎么写_数据库中大于等于0小于等于100怎样表达
- C 语言编程 — 变量和常量
- HashMap的存储过程
- 日志分析平台ELK部署初学
- 2021 整理的最全学习资源,送给每一个努力着的人
- spring与struts2整合出现错误HTTP Status 500 - Unable to instantiate Action
- 移动端页面兼容性问题解决方案整理(一)
- homebrew安装失败的解决方案
- a proxy service
- win10扬声器没有声音但插入耳机有声音
- java closed_Java开发网 - ZipFile closed是什么错误?
- 最细RGB颜色表,建议收藏
- Unity3D 未挂载脚本自动初始化
- Linux技巧--删除某列
- prometheus的401、403报错处理
- MATLAB导入mat文件的方法
- 计算机三维造型 试题,2012上图杯三维建模试题要求
- c++ GDI 中SelectObject使用方法和注意事项
- 计算机考研有哪些值得推荐的院校?能否具体讲讲?
热门文章
- 树的结构 数据结构_段树| 数据结构
- golang的new函数_new()和make()函数以及Golang中的示例
- 案例:Redis 问题汇总和相关解决方案
- 面经 | 我是如何拿到阿里offer的?附面试题+视频
- 【MATLAB】求点到多边形的最短距离
- CentOS 8安装并配置NFS服务
- oracle数据库物理结构包含,Oracle - 数据库物理结构
- php windows 64下载地址,VSCode Windows 64位 下载
- layui tree 加载慢_图片太多,加载慢,我用了layui里的方式,放在服务器后还是太慢!怎么解决???有没有什么优化的技巧???...
- 安卓图标_干货 | 安卓界面系统规范