Java 如果JSON属性为空字符串,如何在Spring中配置JSON反序列化以设置空值?
我为创建了自定义JsonDeserializer,它可以应用于任何字符串类型的字段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
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);