我们使用ObjectMapper来忽略项目中空Map的序列化
configure(SerializationFeature.WRITE_NULL_MAP_VALUES, false)
但在Jackson数据绑定2.9之后,该物业贬值,我们正在寻找替代选择。下面的代码可以代替删除上面的属性吗?
setSerializationInclusion(Include.NON_NULL)
4uqofj5v1#
来自文件:
已弃用,因为2.9有更好的机制指定过滤;具体使用JsonInclude或配置覆盖(请参阅ObjectMapper.configOverride(Class))。确定是否序列化具有空值的Map条目(true)或不序列化(false)的功能。
2.9
ObjectMapper.configOverride(Class)
Map
注意:与其他SerializationFeatures不同,此功能不能在每次调用的基础上动态更改,因为在构建序列化器和属性处理程序时会考虑其影响。默认情况下启用此功能。简单举例:
SerializationFeatures
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 }
1条答案
按热度按时间4uqofj5v1#
来自文件:
已弃用,因为
2.9
有更好的机制指定过滤;具体使用JsonInclude或配置覆盖(请参阅ObjectMapper.configOverride(Class)
)。确定是否序列化具有空值的Map
条目(true)或不序列化(false)的功能。注意:与其他
SerializationFeatures
不同,此功能不能在每次调用的基础上动态更改,因为在构建序列化器和属性处理程序时会考虑其影响。默认情况下启用此功能。
简单举例:
以上代码打印: