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。

相关推荐
凡人叶枫7 分钟前
C++中智能指针详解(Linux实战版)| 彻底解决内存泄漏,新手也能吃透
java·linux·c语言·开发语言·c++·嵌入式开发
Tony Bai7 分钟前
再见,丑陋的 container/heap!Go 泛型堆 heap/v2 提案解析
开发语言·后端·golang
JMchen12322 分钟前
Android后台服务与网络保活:WorkManager的实战应用
android·java·网络·kotlin·php·android-studio
小糯米60128 分钟前
C++顺序表和vector
开发语言·c++·算法
froginwe1133 分钟前
JavaScript 函数调用
开发语言
阔皮大师38 分钟前
INote轻量文本编辑器
java·javascript·python·c#
独望漫天星辰38 分钟前
C++ 多态深度解析:从语法规则到底层实现(附实战验证代码)
开发语言·c++
小法师爱分享41 分钟前
StickyNotes,简单便签超实用
java·python
qq_2975746742 分钟前
Linux 服务器 Java 开发环境搭建保姆级教程
java·linux·服务器
金牌归来发现妻女流落街头1 小时前
【从SpringBoot到SpringCloud】
java·spring boot·spring cloud