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 分钟前
家政服务管理系统|基于springboot + vue家政服务管理系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·论文·毕设·家政服务管理系统
赴生-1 小时前
C++进阶 异常
开发语言·c++
碳基硅坊1 小时前
Spring AI:把大模型接进 Spring 应用
java·人工智能·spring ai
黄毛火烧雪下1 小时前
Java 核心知识点总结(一)
java·开发语言
其实防守也摸鱼1 小时前
软件安全与漏洞--软件安全编码与防御技术理论题库
开发语言·网络·安全·网络安全·软件安全·软件安全与漏洞
x138702859571 小时前
c语言中srtlen(指针使用计算字符长度)、传值和传址调用
c语言·开发语言·算法·visual studio
iCxhust2 小时前
C#进程管理程序
开发语言·汇编·stm32·单片机·c#·微机原理
凡人叶枫2 小时前
Effective C++ 条款28:避免使用 handles 指向对象内部
linux·服务器·开发语言·c++·嵌入式开发
技术小结-李爽2 小时前
【工具】Maven的下载、安装、使用
java·maven
极创信息2 小时前
Linux挖矿病毒深度清理实战教程,从进程隐藏、Rootkit驻留到彻底根除
java·大数据·linux·运维·安全·tomcat·健康医疗