我创建了自定义 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/