使用 Jackson 比较 JSON 对象

17 Mar 2025 | 5 分钟阅读

Jackson 是比较 JSON 对象最常用的库之一。 很多时候,我们需要比较两个 JSON 对象来判断它们是否相同或不同。

为了使用 Jakcson 比较 JSON 对象,我们在 POM.xml 文件中添加以下依赖项

通过使用 ObjectMapper 类,我们可以比较

  1. 两个简单的 JSON 对象。
  2. 带有嵌套元素的两个 JSON 对象。
  3. 包含列表元素的两个 JSON 对象。

让我们首先了解简单 JSON 对象的比较。

假设我们有一个 JSON 字符串,定义为 jsonString1

并且,我们需要将其与另一个 JSON 字符串(定义为 jsonString2)进行比较

让我们举一个例子来理解如何使用 Jackson 比较两个简单的 JSON 对象

CompareJSONObjectsExample1.java

输出

Compare JSON Objects with Jackson

我们使用相同的技术来比较具有嵌套元素或元素列表的 JSON 对象。

使用自定义比较器比较 JSON 对象

对于大多数情况,JsonNode.equals() 方法在比较两个对象时效果很好。 但是,Jackson 提供了 equals() 方法的另一个变体,即 JsonNode.equals(comparator, JsonNode),用于配置自定义 Java Comparator 对象。

因此,我们也可以使用此 equals() 方法的变体来比较两个 JSON 对象。 让我们首先创建一个自定义比较器,稍后,我们将在一个示例中使用它来比较两个 JSON 对象。

注意:标准 equals() 方法将值 121 和 121.0 视为不同。

NameNodeComparator.java

CompareJSONObjectsExample2.java

输出

Compare JSON Objects with Jackson
下一主题#