我希望 jackson 在将空值放入 ObjectNode 实例时忽略它们。 (我知道如何在序列化 pojo 时防止空值)这里我手动将键/值放入 ObjectNode 实例中,并且我希望 jackson 在值为空时忽略要忽略的键/值。
例如
objectNode.put("Name", null);
应该被忽略并且不会被插入到objectNode。
最佳答案
您可以使用 SerializationFeature.WRITE_NULL_MAP_VALUES
功能,但必须先将 ObjectNode
对象转换为 Map
。
参见下面的示例:
ObjectMapper mapper = new ObjectMapper();
mapper.configure(SerializationFeature.WRITE_NULL_MAP_VALUES, false);
String nullValue = null;
ObjectNode subNode = new ObjectNode(mapper.getNodeFactory());
subNode.put("test", 1);
subNode.put("nullValue", nullValue);
ObjectNode node = new ObjectNode(mapper.getNodeFactory());
node.put("notNull", "Not null.");
node.put("nullValue", nullValue);
node.set("subNode", subNode);
MapType mapType = mapper.getTypeFactory().constructMapType(Map.class, String.class, Object.class);
Object mapValue = mapper.convertValue(node, mapType);
System.out.println(mapper.writerWithDefaultPrettyPrinter().writeValueAsString(mapValue));
以上程序打印:
{
"notNull" : "Not null.",
"subNode" : {
"test" : 1
}
}
关于json - 如何防止 NULL 值插入到 Jackson 中的 ObjectNode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25282852/