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

bq3bfh9z  于 2022-11-08  发布在  其他
关注(0)|答案(2)|浏览(189)

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

objectNode.put("Name", null);

应被忽略,并且不会插入到objectNode中。

oxcyiej7

oxcyiej71#

您可以使用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
  }
}
js5cn81o

js5cn81o2#

您可以使用

ObjectNode.putNull(FieldName)

相关问题