使用 Jackson 将布尔值序列化和反序列化为整数2025年3月17日 | 阅读 7 分钟 在 Java 中,Jackson 库是处理 JSON 时的实际标准。为了将布尔值映射到整数值,Jackson 定义良好的默认值是不够的,为此,我们需要执行手动配置。 在本节中,我们将了解如何将布尔值序列化为整数、数字字符串,反之亦然。 让我们逐一了解序列化和反序列化 序列化正如我们已经提到的,Jackson 定义良好的默认值不足以将布尔值映射到整数值。因此,我们将执行手动配置,即**字段级别配置**和**全局配置**。让我们逐一了解这两种类型的配置。 字段级别配置我们可以通过使用 **@JsonFormat** 注释我们的 Boolean 字段来简单地将 Boolean 序列化为 Integer。我们使用 Shape.Number 设置 Shape,如下所示 让我们看一个例子来了解如何将布尔值序列化为整数。 SerializeBooleansAsIntegerExample1.java 输出 ![]() 全局配置有时,无法注释每个字段。 因此,我们使用全局配置的概念来全局配置 Boolean 到 Integer 的序列化。 Jackson 允许我们通过覆盖 ObjectMapper 类中的默认值来全局配置 @JsonFormat 注释。 让我们看一个示例,了解如何通过全局配置 ObjectMapper 类将布尔值序列化为整数。 SerializeBooleanAsIntegerExample2.java 输出 ![]() 反序列化与序列化一样,我们还需要对具有布尔变量的 0 和 1 值的字符串执行反序列化。 因此,我们需要在将 JSON 字符串反序列化到我们的模型时从整数中获取布尔值。 不需要使用 **@JsonFormat** 注释或任何配置来将整数解析为布尔值,因为默认情况下 Jackson 会为我们执行此任务。 让我们看一个例子来了解如何完成反序列化 DeserializeIntegerIntoBooleanExample.java 输出 ![]() 数字字符串而不是整数很多时候,我们需要将布尔值序列化/反序列化为数字字符串。 让我们逐一了解序列化和反序列化 序列化为数字字符串为了将布尔值序列化为数字字符串,我们需要创建一个自定义序列化器,然后使用它将布尔值序列化为数字字符串。 让我们首先创建一个自定义序列化器,即 NumericStringSerializer,然后我们将举一个例子,在该示例中使用此自定义序列化器将布尔值序列化为数字字符串。 NumericStringSerializer.java SerializeBooleanToNumericString.java 输出 ![]() 从数字字符串反序列化与序列化一样,对于反序列化,我们还使用自定义反序列化器。 我们将创建一个自定义反序列化器,然后我们将使用它将数字字符串反序列化为布尔值。 让我们首先创建一个自定义反序列化器,即 NumericStringDeserializer,然后我们将举一个例子,在该示例中使用此自定义反序列化器将数字字符串反序列化为布尔值。 NumericStringDeserializer.java DeserializeNumericStringToBoolean.java 输出 ![]() |
我们请求您订阅我们的新闻通讯以获取最新更新。