Jackson 序列化并删除空格

问题描述 投票:0回答:1

我有一些代码可以从数据库中提取数据并填充 POJO。然后,该 POJO 被序列化并推送到 Elasticsearch 集群中。

我遇到的问题是数据库中的一个字段是自由文本,人们只是输入 a 来绕过必填字段。

我希望能够在推动弹性时去除该空白。

这是我的 pojo 的示例

public class Destination {
    Long id;
    ...
    ...
    String Address;

}

我正在使用 Jackson 使用 ObjectMapper 类将其转换为 JSON。 IE

mapper.convertTo(dest, Map.class)

当我查看弹性值时,我看到:

{"id":1, ..., "address": " "}

理想情况下,在这种情况下,我只是想看到“id”属性,因为“地址”本质上是空的。

我尝试过使用 ObjectMapper 的序列化属性,但似乎没有任何效果。是否有处理此问题的标准方法? Spring 如何处理这个问题?

我见过类似的问题(Jackson Json Serialization:删除空白字符串),但我不确定如何在全球范围内应用该解决方案,而不仅仅是在类级别,或者是否可以在全球范围内应用它。

java json serialization jackson objectmapper
1个回答
0
投票

本质上,您要求在 Jackson 序列化中跳过/省略具有

null
值的字段 - 无需挂钩 Jackson 的格式配置,这是一个不同的主题。

ObjectMapper 可以配置为跳过空值字段,如下所示:

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.json.JsonMapper;

// ...

ObjectMapper jackson = JsonMapper.builder()
                .serializationInclusion(JsonInclude.Include.NON_NULL)
                .build();
String json = jackson.writeValueAsString(object);

假设 POJO 或记录中唯一设置为非空的值是

id
,则结果字符串将为
{"id":1}

© www.soinside.com 2019 - 2024. All rights reserved.