使用未知属性反序列化 JSON Jackson

17 Mar 2025 | 4 分钟阅读

在本节中,我们将使用 Jackson 的 "2.x" 版本来介绍最重要的解组过程。目前,JSON 已被广泛用于表示数据。当我们处理具有未知属性的 JSON 数据并对其进行解组时,它将抛出 Unknown Property 异常。

让我们通过一个例子来了解如何使用附加/未知字段解组 JSON 数据。

使用附加或未知字段反序列化 JSON

在解组 JSON 时,JSON 数据的形状和大小可以是任意的。当我们将它映射到具有一组字段的预定义 Java 对象时,它可能会导致异常。当它在 Java 对象中找不到匹配的字段时,可能会发生异常。为了处理此异常,我们需要忽略无法映射到现有 Java 字段的 JSON 属性。

JSON 数据

Java 对象

当我们将 JSON 反序列化为 Product 对象时,它将导致 com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException.

DeserializeJSONWithUnknownFields1.java

输出

Deserializing JSON with Unknown Properties Jackson

现在,为了处理未知字段,我们将配置完整的 ObjectMapper 类以忽略 JSON 中的未知属性。我们按以下方式配置 ObjectMapper 类

现在,我们只需配置 ObjectMapper 类并将其添加到上述代码中即可。

DeserializeJSONWithUnknownFields2.java

输出

Deserializing JSON with Unknown Properties Jackson

还有另一种处理未知属性的方法,即通过在类级别使用 @JsonIgnoreProperties(ignoreUnknown = true) 注释,如下所示

当我们在类级别使用注释时,无需配置 ObjectMapper 类来忽略 JSON 属性。

DeserializeJSONWithUnknownFields3.java

输出

Deserializing JSON with Unknown Properties Jackson