0

如果除了一个字段之外值为空,我需要从 JsonNode 中删除值。我可以使用 JsonNode.Iterator() 删除对 JsonNode 的迭代,但它只给出值。我需要检查作为键的字段replacementItems并且即使该字段为空也不要将其删除。

 public JsonNode stripNulls(JsonNode node) {
        log.info("striping nulls");
        if(node == null){
            return null;
        }

Iterator<JsonNode> it = node.iterator();
        log.info("tt" + it.hasNext());
        while (it.hasNext()) {
            JsonNode child = it.next();
            if (child.isNull()) {
                it.remove();
            }
            else{
                if(child.get("promotion") != null){
                    continue;
                }else{
                    stripNulls(child);
                }
            }
        }
}

我正在尝试使用 JsonNode.fields() 来获取键/值对并检查该字段是否是替代项,不要删除它,否则删除。

 public JsonNode stripNulls(JsonNode node) {
        log.info("striping nulls");
        if(node == null){
            return null;
        }
Iterator<Map.Entry<String, JsonNode>> fields = node.fields();

        log.info("dd " + fields.hasNext());
        while (fields.hasNext()) {
            Map.Entry<String, JsonNode> field = fields.next();
            log.info("contains" + field.getKey() + " --- " + field.getValue());
            if(field.getValue().isNull() && !field.getKey().equals("substitutionItems")) {
                log.info("to remove " + field.getKey() + " --- " + field.getValue());
                fields.remove();
            }
            else{
                if(field.getValue().get("promotion") != null){
                    continue;
                }else{
                    stripNulls(field.getValue());
                }
            }
        }
}

但是这样做时fields.hasNext()返回 false。

我怎样才能达到预期的效果?

4

0 回答 0