Java 如果JSON属性为空字符串,如何在Spring中配置JSON反序列化以设置空值?

Java 如果JSON属性为空字符串,如何在Spring中配置JSON反序列化以设置空值?,java,json,spring,json-deserialization,Java,Json,Spring,Json Deserialization,我为创建了自定义JsonDeserializer,它可以应用于任何字符串类型的字段 public class EmptyToNullStringDeserializer extends JsonDeserializer<String> { @Override public String deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingEx

我为创建了自定义JsonDeserializer,它可以应用于任何字符串类型的字段

public class EmptyToNullStringDeserializer extends JsonDeserializer<String> {
    @Override
    public String deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException {
        String text = jp.getText();
        return "" == text ? null : text;
    }
}
它转换JSON

{"someField": ""}
进入Java对象,其中
someField
等于
null
(不是

问题:如何创建通用的
JsonDeserializer
,将
null
设置为JSON中等于
的所有Java对象字段? 应将其用作:

@JsonDeserialize(using = EmptyToNullStringDeserializer.class)
class SomeClass {
        private String someField;
}

这更像是杰克逊的问题,而不是春天的问题。您只需使用对象映射器注册自定义反序列化程序即可

SimpleModule module = new SimpleModule("MyModule", new Version(1, 0, 0, null));
module.addDeserializer(String.class, new EmptyToNullStringDeserializer());
mapper.registerModule(module);

如何访问ObjectMapper取决于您使用的是Spring引导还是纯Spring。

您需要向ObjectMapper注册自定义反序列化程序

SimpleModule module = new SimpleModule("MyModule", new Version(1, 0, 0, null));
module.addDeserializer(String.class, new EmptyToNullStringDeserializer());
mapper.registerModule(module);