Java常见技术分享-29-Jackson JSON处理类详解

在处理Json字符串的过程中, 最常见的三个类 是 JsonNode , ObjectNode , ArrayNode.

基本概念
  • JsonNode
    • Jackson库中表示JSON 数据结构的基类, JsonNode类本身设计为不可变,例如,你不能直接修改一个JsonNode的字段值。
  • ObjectNode , ArrayNode
    • 属于JsonNode 的子类, 专门表示JSON 对象。 它们是可变的(mutable)。这些子类提供了添加、删除和修改节点内容的方法。
核心概念

在Jackson库中,JsonNode是一个抽象类,而ObjectNode和ArrayNode是它的两个具体子类。当我们使用ObjectMapper读取一个JSON字符串时,返回的JsonNode的具体类型取决于JSON内容。

例如,如果JSON是一个对象(以{开头),那么readTree方法将返回一个ObjectNode实例。如果是一个数组(以[开头),则返回ArrayNode。如果是值(字符串、数字等),则返回相应的值节点(如TextNode、NumericNode等)。

因此,当我们有一个JsonNode对象,并且我们知道它实际上是一个JSON对象(即ObjectNode),那么我们可以将其强制转换为ObjectNode。但是,如果这个JsonNode实际上是其他类型(比如ArrayNode或TextNode),那么强制转换就会抛出ClassCastException。

相关推荐
敲个大西瓜4 分钟前
JAVA 并发编程
java·并发编程
vHelios34 分钟前
【电商项目】商品服务模块的问题解决与代码逻辑思考
java·sql·mybatis
rannn_11140 分钟前
【力扣hot100】238、41、73题解
java·算法·leetcode·开发
在世修行40 分钟前
从零打造 C# 工业视觉检测系统(十一):Task 异步编程与实时性保障
开发语言·c#·task异步
今天的砖头有点烫手啊1 小时前
Spring Boot
java·人工智能
BUG研究员_10 小时前
Runnable与LCEL
开发语言·人工智能·python
码农颜11 小时前
5.4.1 锁分类
java·数据库·mysql
牛艺翔12 小时前
C++基础
开发语言·c++
键盘会跳舞12 小时前
C++ :容器适配器stack源码级拆解
开发语言·c++··stack·先进后出
linux-hzh12 小时前
百日算法修炼 · Day 03
java·算法