首页 > 解决方案 > 从 JAVA 中的未知 JSON 格式中按键移除 Json 元素

问题描述

我需要通过其键名删除完整的 JSON 对象,我每次都有随机 JSON,我需要找到一个特定元素并将其删除。 例如,我有以下 JSON:

{
    "abc":{
        "remove_me": "123456"
    }
}

但可能下次我可能有以下

{
    "abc": {
        "xyz": {
            "test": "test"
        }
    },
     "abc1": {
        "xyz1": {
            "remove_me": "232233",
            "test": "dfefd",

        }
    }
}

每次我有不同的 JSON 格式,即使是更复杂的格式。但我必须删除元素的关键是remove_me

我正在用Java做,请帮忙!

标签: javajsonspring-bootjackson

解决方案


当我使用com.fasterxml.jackson库时,下面是解决方案。

private static void iterateJSONAndRemoveKey(JsonNode rootNode,String toRemove) throws Exception {
        Iterator<String> keysIterator = rootNode.fieldNames();
        while (keysIterator.hasNext()) {
            String key = keysIterator.next();
            if (key.equalsIgnoreCase(toRemove)){
                ((ObjectNode) rootNode).remove(toRemove);
                return;
            }else if (rootNode.isObject()){
                   iterateJSONAndRemoveKey(rootNode.get(key),toRemove);
            }else if (rootNode.isArray()){
                ArrayNode arrayNode = (ArrayNode) rootNode;
                for (JsonNode node : arrayNode) {
                    iterateJSONAndRemoveKey(node,toRemove);
                }

            }
        }
    }

问的答案帮助我在杰克逊库中编写逻辑。


推荐阅读