关于 java:Jackson 类中所有空字符串的反序列化为 null

Jackson Deserialization of all empty Strings to null in class

我有多个 POJO,其中一些我想要
将所有空字符串反序列化为 null.

对我来说有没有办法(可能是注释?)
告诉杰克逊哪些 POJO 应该反序列化
null 的所有空字符串,
哪个不应该?

不是重复的,我正在寻找一种适用于类而不是单个字段的解决方案


定义一个序列化器如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class EmptyStringAsNullDeserializer extends JsonDeserializer<String> {

    @Override
    public String deserialize(JsonParser jsonParser,
                              DeserializationContext deserializationContext)
                              throws IOException {

        String value = jsonParser.getText();
        if (value == null || value.isEmpty()) {
            return null;
        } else {
            return value;
        }
    }
}

将其添加到 Module,然后将 Module 注册到您的 ObjectMapper:

1
2
3
4
5
SimpleModule module = new SimpleModule();
module.addDeserializer(String.class, new EmptyStringAsNullDeserializer());

ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(module);