【问题标题】:How to configure JSON deserialization in Spring to set null values if JSON property is empty string?如果 JSON 属性为空字符串,如何在 Spring 中配置 JSON 反序列化以设置空值?
【发布时间】:2015-06-22 12:59:04
【问题描述】:

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

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;
    }
}

可以在模型中使用。

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

它转换 JSON

{"someField": ""}

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

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

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

【问题讨论】:

    标签: java json spring json-deserialization


    【解决方案1】:

    这更像是杰克逊问题而不是春季问题。您只需要使用 ObjectMapper...

    注册您的自定义反序列化器
    SimpleModule module = new SimpleModule("MyModule", new Version(1, 0, 0, null));
    module.addDeserializer(String.class, new EmptyToNullStringDeserializer());
    mapper.registerModule(module);
    

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

    【讨论】:

      【解决方案2】:

      您需要使用 ObjectMapper 注册您的自定义反序列化器

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多