JSON数据的操作,系列文章:
《Jackson的核心类与API方法:ObjectMapper、JsonNode、ObjectNode、ArrayNode》
《Jackson的使用与创建Jackson工具类》
《Jackson使用ObjectNode对象实现JSON对象数据(一):增、删、改、查》
《Jackson使用ArrayNode对象实现JSON列表数据(二):增、删、改、查》
《Jackson实现JSON数据的合并》
Jackson 不仅是一个基于 Java 语言的、开源的 JSON 解析库,也是 Spring Boot 默认使用的 JSON 解析库。为什么 Spring Boot 会默认使用 Jackson 呢?这是因为在 spring-boot-starter-web 依赖包中已经依赖了 Jackson 的依赖包(即:jackson-databind)。
在实际开发中,Jackson 功能丰富、安全可靠并且具有比较好的兼容性,这让程序开发人员可以很方便地实现 JavaBean 和以 “键 : 值” 结构保存的 JSON 数据的相互转换。
1、ObjectMapper 映射器类
Spring Boot 默认使用的 Jackson 具有两个常用类,它们分别是 JsonNode 节点类和 ObjectMapper 映射器类。下面将详细介绍这两个类的 API。
ObjectMapper 映射器类既可以把 JavaBean 映射成为 “键 : 值” 结构保存的 JSON 数据,也可以把以 “键 : 值” 结构保存的 JSON 数据封装成 JavaBean 对象。
因为 Spring Boot 在启动时会自动创建 ObjectMapper 类的 Bean 即可使用 ObjectMapper 类的常用 API。
【示例】
在 Spring Boot 项目中,注入 ObjectMapper 类的 Bean 对象。
* 注入Jackson映射器
@Autowired
private ObjectMapper mapper;
ObjectMapper 类常用 API 及其说明:
convertValue(Object fromValue, Class<T> toValueType)
将 Java 对象(如 POJO、List、Map、Set 等)解析成 JSON 节点对象。
JsonNode
readTree(byte[] content)
将字节数组封装成 JSON 节点对象。
JsonNode
readTree(File file)
将本地 JSON 文件封装成 JSON 节点对象。
JsonNode
readTree(InputStream in)
将字节输入流封装成 JSON 节点对象。
JsonNode
readTree(String content)
将 JSON 字符串封装成 JSON 节点对象。
JsonNode
readTree(URL source)
将 content 地址提供的 JSON 内容封装成 JSON 节点对象。
readValue(byte[] src, Class<T> valueType)
将 JSON 类型的字符串的字节数组转换为 Java 对象。
readValue(File src, Class<T> valueType)
将本地 JSON 内容的文件封装成 Java 对象。
readValue(InputStream src, Class<T> valueType)
将字节输入流中的 JSON 内容封装成 Java 对象。
readValue(Reader src, Class<T> valueType)
将字节输入流中的 JSON 内容封装成 Java 对象。
readValue(String content, Class<T> valueType)
将 JSON 类型的字符串 content 封装成 Java 对象。
readValue(URL src, Class<T> valueType)
将 src 地址提供的 JSON 内容封装成 Java 对象。
treeToValue(TreeNode var1, Class<T> valueType)
将 JSON 树节点对象转换成为 Java 对象(如 POJO、List、Map、Set 等)。TreeNode 树节点是整个 JSON 节点对象模型的根接口。
writeValue(File resultFile, Object value)
将 Java 对象序列化并输出到指定文件中。
Jackson
中的
Json
Node
,
Object
Node
,
Array
Node
使用和区别一、前言1.
Json
Node
作用2.
Json
Node
VS
Object
Node
二、只读的
Json
Node
1. 测试用的
JSON
文本2.
JSON
和
Json
Node
相互转换3. 使用get
方法
取值4. 使用path
方法
取值5. 使用at
方法
取值三、可修改的
Object
Node
四、可修改的
Array
Node
若你的项目里使用
Jackson
处理
JSON
,必然会看到很多
Json
Node
、
Object
Node
和
市面上用于在
Java
中解析
Json
的第三方库,随便一搜不下几十种,其中的佼佼者有 Google 的 Gson, Alibaba 的 Fast
json
以及本文的
jackson
。
我们在学习一门技术之前,首选要了解这门技术的优劣性,以及它和同等技术的对比。fast
json
这么快老外为啥还是热衷
jackson
?
使用
Jackson
导入
jackson
-databind、
jackson
-annotations、
jackson
-core 3 个主要模块
本文聚焦
Java
JSON
处理
核心
工具
Jackson
的树模型,解析其三大
核心
节点:
Json
Node
是不可变的
JSON
节点抽象基
类
,负责读取未知 / 动态
JSON
;
Object
Node
是可变
JSON
对象工具,用于构造、修改键值对与嵌套结构;
Array
Node
是可变
JSON
数组工具,支持数组的增删改与合并。三者分工明确:
Json
Node
主 “读”,
Object
Node
、
Array
Node
主 “写”,适配不同
JSON
结构场景。
Jackson
的使用
Jackson
简介
Jackson
特点
Jackson
注解@
Json
Property@
Json
Ignore@
Json
IgnoreProperties@
Json
IgnoreType@
Json
PropertyOrder@
Json
RootName
Jackson
使用实例对象的序列化与反序列化集合的序列化与反序列化
Jackson
详细使用
Jackson
简介
Jackson
是一个简单基于
Java
应用库,
Jackson
可以轻松的将
Java
对象转换成
json
对象和 xml 文
TwitterEntry tFromFile = mapper.readValue(new File(“twitter.
json
”), TwitterEntry.class);
byte数组转对象:
TwitterEntry tFromBytes = mapper.readValue(
array
, TwitterEntry.class);
字符串网络地址转对象:
String test
Json
DataUrl = “https://raw.githubusercontent.com/zq2599/bl
一.
Jackson
概述 与 依赖
1.市面上用于在
Java
中解析
Json
的第三方库,随便一搜不下几十种,其中的佼佼者有 Google 的 Gson, Alibaba 的 Fast
json
以及本文的
jackson
。
2.我们在学习一门技术之前,首选要了解这门技术的优劣性,以及它和同等技术的对比。fast
json
这么快老外为啥还是热衷
jackson
?
3.使用
Jackson
导入
jackson
-databind、
jackson
-annotations、
jackson
-core 3 个主要模
需要注意的是,每次添加新的子节点时,都会创建一个新的
Json
Node
对象,因此在处理大量数据时需要注意效率问题。另外,
Object
Node
类
提供了许多便捷的
方法
来操作
JSON
对象,如put()、set()、replace()等,可以极大地简化
JSON
数据的处理过程。但是,在处理大量数据时,需要注意
Object
Node
对象的创建和销毁,以及内存使用的问题。
Object
Node
类
中包含了
Json
Node
类
中的所有
方法
,同时也添加了一些操作
JSON
对象的
方法
,例如put()、remove()等等。
Json
Node
是
Jackson
中为了处理JOSN文本的树模型(tree model)。可以将
JSON
文本转成
Json
Node
,也可以将
Json
Node
转成JOSN文本。。
Object
Node
和
Array
Node
都是
Json
Node
类
的扩展,不同的是
Json
Node
是只读的,而。...
Jackson
库的
核心
功能是将
Java
对象转换为
json
字符串(序列化)以及将
json
字符串转换为
Java
对象(反序列化)
Spring
MVC默认
json
解析器便是
Jackson
与其他
Java
的
json
的框架相比
Jackson
解析大的
json
文件速度比较快
Jackson
运行时占用内存比较低,性能比较好
Jackson
有灵活的
API
,可以很容易进行扩展和定制
核心
模块由三部分组成
jackson
-core,
核心
包。