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

标签 java json spring json-deserialization

我创建了自定义 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 设置为等于 "" 的所有 Java 对象字段> 在 JSON 中? 它应该用作:

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

最佳答案

这更像是 Jackson 的问题,而不是 Spring 的问题。您只需要使用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。

关于java - 如果JSON属性为空字符串,如何在Spring中配置JSON反序列化以设置空值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30980621/

相关文章:

Java 8 按多个字段分组到单个映射中

java - 如何从spring的mongo模板执行mongo查询?

java - IzPack 和辅助功能(使用屏幕阅读器)

java - ModelMapper:根据子类选择映射

java - 在 Mockito 中模拟 "marshalSendandReceive"方法调用时出现问题

java - Hadoop作业看不到文件,那hadoop fs -cat可以正常打印

c++ - 修复错误的 JSON 数据

javascript - 将键/值对添加到特定的 Javascript 对象

javascript - 动态显示 HTML 下拉菜单中的嵌套 JSON

spring - 使用条件查询/hibernate 查询选择最大 id 行时出现问题?