Jackson JSON Views

17 Mar 2025 | 6 分钟阅读

JSON Views 是 Jackson 的另一个重要组成部分。JSON Views 也用于序列化和反序列化 Java 对象。我们使用 @JsonView 注释在序列化/反序列化时自定义视图。

在本节中,我们将了解如何使用 JSON Views 执行序列化/反序列化,以及如何自定义视图。

使用 JSON Views 进行序列化

为了使用 @JsonView 序列化对象,我们首先创建一个视图,然后我们将使用它进行序列化。让我们举个例子来理解如何使用 JSON View 序列化一个对象。

JSONViewExample1.java

输出

Jackson JSON Views

通过使用多个 JSON Views,我们也可以在 Java 中序列化一个对象。在这里,我们创建一个视图,其中 Internal 视图扩展到 Public 视图。所以,Views 类看起来像这样

我们将修改 Student 类。在 Student 类中,stdId 和 stdName 字段将包含在 Public 视图中。我们创建一个新字段,即 course,它将被包含在 Internal 视图中。所以,我们的 Student 类看起来像这样

现在,让我们举个例子来理解我们如何使用多个 JSON Views 序列化一个对象

JSONViewExample2.java

输出

Jackson JSON Views

使用 JSON Views 进行反序列化

就像序列化一样,我们也可以通过使用 JSON Views 将 JSON 字符串反序列化为 Java 对象。让我们举个例子来理解如何使用 JSON Views 完成反序列化。

JSONViewExample3.java

输出

Jackson JSON Views

使用自定义 JSON Views 进行序列化

我们还可以通过使用自定义 JSON View 来 Java 对象。为了使用自定义 JSON View 序列化 Java 对象,我们首先使用 BeanPropertyWriter 自定义 JSON 视图。我们通过扩展 BeanPropertyWriter 来创建 65UpperCasingWriter 类,用于将学生姓名转换为大写。

让我们创建 UpperCasingWriter 类,用于将学生姓名转换为大写。

UpperCasingWriter.java

现在,我们将创建一个自定义修改器,以使用我们的 CustomCasingWriter 设置学生姓名 BeanPropertyWriter。

CustomBeanSerializerModifier.java

让我们举个例子来理解如何使用自定义 JSON View 完成序列化。

JSONViewExample4.java

输出

Jackson JSON Views