我们正在使用ObjectMapper忽略项目中空映射的序列化
configure(SerializationFeature.WRITE_NULL_MAP_VALUES, false)
但是在Jackson-Databind 2.9之后,该物业已贬值,我们正在寻找其他选择。
下面的代码可以代替删除上述属性吗?
setSerializationInclusion(Include.NON_NULL)
答案 0 :(得分:1)
已弃用。从2.9开始,有更好的机制来指定 过滤特别是使用
JsonInclude
或配置替代 (请参见ObjectMapper.configOverride(Class)
)。功能决定 是否要对具有空值的Map
项进行序列化(true)还是 不是(错误)。
简单的例子:
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonInclude.Value;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import java.util.HashMap;
import java.util.Map;
public class JsonApp {
public static void main(String[] args) throws Exception {
Map<String, Object> map = new HashMap<>();
map.put("string", "value");
map.put("int", 1);
map.put("null1", null);
map.put(null, null);
ObjectMapper mapper = new ObjectMapper();
mapper.enable(SerializationFeature.INDENT_OUTPUT);
mapper.configOverride(Map.class).setInclude(Value.construct(JsonInclude.Include.NON_NULL, JsonInclude.Include.NON_NULL));
System.out.println(mapper.writeValueAsString(map));
}
}
上面的代码显示:
{
"string" : "value",
"int" : 1
}