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 对象。
java">/*** 注入Jackson映射器*/
@Autowired
private ObjectMapper mapper;
ObjectMapper 类常用 API 及其说明:
返回值 | 方法 | 说明 |
---|---|---|
T | 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 节点对象。 |
T | readValue(byte[] src, Class<T> valueType) | 将 JSON 类型的字符串的字节数组转换为 Java 对象。 |
T | readValue(File src, Class<T> valueType) | 将本地 JSON 内容的文件封装成 Java 对象。 |
T | readValue(InputStream src, Class<T> valueType) | 将字节输入流中的 JSON 内容封装成 Java 对象。 |
T | readValue(Reader src, Class<T> valueType) | 将字节输入流中的 JSON 内容封装成 Java 对象。 |
T | readValue(String content, Class<T> valueType) | 将 JSON 类型的字符串 content 封装成 Java 对象。 |
T | readValue(URL src, Class<T> valueType) | 将 src 地址提供的 JSON 内容封装成 Java 对象。 |
T | treeToValue(TreeNode var1, Class<T> valueType) | 将 JSON 树节点对象转换成为 Java 对象(如 POJO、List、Map、Set 等)。TreeNode 树节点是整个 JSON 节点对象模型的根接口。 |
void | writeValue(File resultFile, Object value) | 将 Java 对象序列化并输出到指定文件中。 |
void | writeValue(OutputStream out, Object value) | 将 Java 对象序列化并输出到指定字节输出流中。</ |