如何防止在jackson中将NULL值插入ObjectNode

时间:2014-08-13 09:36:42

标签: json jackson

我希望jackson在将它们放入ObjectNode实例时忽略空值。 (我知道如何在序列化pojo时阻止空值)这里我手动将键/值放在ObjectNode实例中,我希望jackson在值为null时忽略要忽略的键/值。

例如

objectNode.put("Name", null);

应该被忽略,不会插入到objectNode。

1 个答案:

答案 0 :(得分:2)

您必须先使用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
  }
}