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 小时前
IT6520:USB‑C 转 MIPI 芯片方案 4K@120Hz 高清显示
c语言·开发语言
言之。8 小时前
【Python】免费的中文 AI 配音方案
开发语言·人工智能·python
天天进步20158 小时前
Python全栈项目:从零手操一个高性能 API 网关
开发语言·python
Java面试题总结8 小时前
java高频面试题(2026最新)
java·开发语言·jvm·数据库·spring·缓存
苦逼的猿宝8 小时前
学生心理咨询评估系统
java·毕业设计·springboot·计算机毕业设计
隔窗听雨眠8 小时前
doctype、charset、meta如何控制整个渲染流水线
java·服务器·前端
安生生申9 小时前
使用pygame实现2048
开发语言·python·pygame
hh.h.10 小时前
CANN算子开发入门:从零开始写第一个Ascend C算子
c语言·开发语言·cann·c算子
西安邮电大学10 小时前
SpringBean完整生命周期
java·spring
刀法如飞10 小时前
DDD 与 Ontology 对比分析:哪一种更适合AI时代复杂系统构建?
java·架构·领域驱动设计