Jackson 中的 Tree Model 节点2025年3月17日 | 阅读 14 分钟 在 Jackson 中,树模型节点是我们将在本节讨论的最重要的概念之一。我们将使用 **树模型节点** 进行各种转换以及添加、修改和删除节点。 让我们了解如何创建节点、转换节点、操作节点、定位节点以及逐个遍历节点。 ![]() 创建节点首先,我们将通过默认构造函数创建一个 ObjectMapper 类的实例。 ObjectMapper mapper =new ObjectMapper(); 现在,我们可以通过以下三种方式之一构建一个 JsonNode:
让我们举个例子来理解如何使用 **valueToTree()** 方法创建 JsonNode。 ValueToTreeJsonNode.java 输出 ![]() 转换节点我们可以将树节点转换为字符串或 Java 对象。 ![]() 将树节点转换为 JSON 字符串当我们需要将树节点作为 JSON 写入目标时,我们将树节点转换为 JSON 字符串。这里的目标可以是 OutputStream、File 或 writer。我们按照以下方式使用 mapper 类的 **writeValue()** 方法: mapper.writeValue(destination, node) 让我们举个例子来理解如何使用 writeValue() 方法将 JsonNode 作为 JSON 写入目标文件。 WriteOutAsJSONExample.java 输出 ![]() 将树节点转换为 Java 对象我们还可以使用 **treeToValue** API 将 JSON 节点转换为 Java 对象。ObjectMapper 类的 treeToValue() 方法接受两个参数,即 JsonNode 和 Object.class。 **treeToValue()** 方法类似于 ObjectMapper 类的 **convertValue()** 方法。 我们还可以使用令牌流将 JsonNode 转换为 Java 对象。我们按照以下方式使用 **treeAsTokens()** 和 **readValue()** 方法: 让我们举个例子,在其中我们将使用所有这三种方法将 JsonNode 转换为 Java 对象。 ConvertJsonNodeToJavaObject.java 输出 ![]() 操作树节点我们可以使用 Jackson 来操作 **树节点**。操作树节点包括定位节点、添加新节点、编辑节点和删除节点。 让我们通过示例逐一理解它们。 定位特定节点我们使用以下步骤从 JSON 中定位特定的 JsonNode:
让我们使用上述步骤来实现定位特定节点的代码。 ManipulatingNodeExample1.java 输出 ![]() 添加新节点我们可以将一个新节点添加为另一个节点的子节点。我们使用 put() 方法来添加节点。我们按照以下方式使用 put() 方法: Jackson 提供了 put 方法的几个重载变体,可用于添加不同值类型的新节点。 但是,Jackson 提供了几个其他方法来添加子节点,例如 **putArray()、putObject()、putPOJO()、putRawValue()** 和 **putNull()**。 让我们举个例子来理解如何使用 put() 方法将节点添加为子节点。 ManipulatingNodeExample2.java 输出 ![]() 编辑节点就像添加新的 JsonNode 一样,我们可以编辑特定 JsonNode 的值。我们使用以下步骤来编辑特定的 JsonNode:
让我们使用上述步骤来实现编辑特定节点的代码。 ManipulatingNodeExample3.java 输出 ![]() 删除节点就像添加或编辑节点一样,我们也可以从 JsonNode 中删除特定的节点。我们通过在其父节点上调用 remove() 方法或 remove API 来删除特定的节点。我们使用以下步骤来编辑特定的 JsonNode:
让我们使用上述步骤来实现删除特定节点的代码。 ManipulatingNodeExample4.java 输出 ![]() 遍历节点为了遍历节点,我们首先需要将它们重新格式化为 YAML。JSON 文档可以包含三种类型的节点,即 **值、对象** 和 **数组**。JSON 文档以分层的树结构包含节点。因此,我们将从顶部开始遍历 JSON 文档,并遍历所有子节点。 我们将使用递归过程来遍历 JSON 节点。在递归方法中,我们将传递 JSON 文档的根节点。 我们将使用以下步骤遍历节点:
让我们使用上述步骤来实现遍历所有节点的代码。 ManipulatingNodeExample5.java 输出 ![]() 下一主题Java 中的事件类型 |
在本节中,我们将学习 Java 中的断言操作及其相应的示例。我们还将学习相应的断言类型。Java 中的断言是什么?“assert”关键字在 Java 中执行断言操作。断言的概念...
5 分钟阅读
目标栈规划是一种流行的用于规划和问题解决任务的人工智能技术。它涉及将复杂的任务分解为一系列子目标和动作以实现这些目标。在本文中,我们将探讨目标栈规划的概念并实现...
阅读 12 分钟
在并发编程领域,线程安全在确保软件应用程序的稳定性和正确性方面起着至关重要的作用。Java 作为开发并发应用程序的流行语言,提供了各种实现线程安全的机制。在本节中,我们将探讨概念…
阅读 6 分钟
? Advance 的字典含义是前进或发展或改进,而 improve 的意思是使某事变得更好的事物。总而言之,我们必须提高基本知识才能在该特定领域成为大师。Java 分为两部分...
阅读 15 分钟
Y 形链表是一种链表,其中两条不同的链表在共享的交叉点处相遇。在此 Java 程序中,我们说明了如何确定两条链表汇合的交叉点。该方法包括遍历...
14 分钟阅读
java.time.format.DecimalStyle 类具有 getPositiveSign() 方法。Java DecimalStyle 类用于检索此 DecimalStyle 的 Locale 所用的正号字符。此方法返回该区域的正号字符。语法:public char getPositiveSign() 参数:...
阅读 3 分钟
在 Java 项目中,每个可执行 jar 文件都包含一个 main 方法。通常,它放置在应用程序的起点。要通过自执行 jar 文件执行 main 方法,我们必须拥有正确的 manifest 文件,并在项目完成时将其打包...
阅读 3 分钟
在 Java 中,数组要么没有元素,要么所有元素都为 null,这种情况称为空数组。可以使用 Java 中的 new 关键字来声明一个空数组。空数组或没有元素的数组是……
阅读 3 分钟
Java 中的 this 和 super 关键字的区别 在 Java 中,`super` 和 `this` 关键字对于与类和对象交互至关重要。除了引用类成员外,它们还有助于管理继承。Java 还提供了 `this()` 和 `super()` 构造函数,它们在构造函数中使用。this 关键字...
阅读 8 分钟
在 Java 中,Collection 是一个框架,提供了接口(Set、List、Queue 等)和类(ArrayList、LinkedList 等)来存储对象的集合。这些类以无序的方式存储数据。有时我们需要以有序的方式排列数据,这是已知的...
阅读 8 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India