我遇到一个问题,我尝试使用下面的代码将空字符串反序列化为空值。有没有办法适当地反序列化。我创建了一个类EmptyStringDeserializer
,但是却无法创建自定义解串器。在下面,您可以找到我的EmptyStringDeserializer
,以查看我做错了什么。
答案 0 :(得分:1)
您可以在ObjectMapper
中启用ACCEPT_EMPTY_STRING_AS_NULL_OBJECT
:
ObjectMapper mapper = new ObjectMapper();
mapper.enable(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT);
或者,您可以定义自定义反序列化器:
public class CustomStringDeserializer extends JsonDeserializer<String> {
@Override
public String deserialize(JsonParser p, DeserializationContext ctxt)
throws IOException {
String value = StringDeserializer.instance.deserialize(p, ctxt);
if (value == null || value.trim().isEmpty()) {
return null;
}
return value;
}
}
并将其注册到您的ObjectMapper
中的模块中:
SimpleModule module = new SimpleModule();
module.addDeserializer(String.class, new CustomStringDeserializer());
ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(module);
此反序列化器将用于反序列化所有字符串。
答案 1 :(得分:0)
您的@JsonDeserialize
应该在字段级别,而不是课程级别。在每个字符串字段上添加。