我希望Jackson在将空值放入ObjectNode示例时忽略它们。(我知道如何在序列化pojo时防止空值)这里我手动将键/值放入ObjectNode示例,并且希望jackson在值为空时忽略要忽略的键/值。例如,
objectNode.put("Name", null);
应被忽略,并且不会插入到objectNode中。
oxcyiej71#
您可以使用SerializationFeature.WRITE_NULL_MAP_VALUES功能,但在此之前必须将ObjectNode对象转换为Map。请参见以下示例:
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 } }
js5cn81o2#
您可以使用
ObjectNode.putNull(FieldName)
2条答案
按热度按时间oxcyiej71#
您可以使用
SerializationFeature.WRITE_NULL_MAP_VALUES
功能,但在此之前必须将ObjectNode
对象转换为Map
。请参见以下示例:
上述程序打印:
js5cn81o2#
您可以使用