gpt4 book ai didi

java - 如何使用 Jackson 删除 Java 中的空 json 节点?

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:48:50 26 4
gpt4 key购买 nike

我是一名初级 Java 程序员,所以如果我的问题有点愚蠢,我很抱歉。

我有一个如下所示的 JSON 对象:

{
"element1" : {
"generated_name_1": {
"a" : {"isReady":false}
},
"generated_name_2":{},
"generated_name_3":{},
"generated_name_4":{}
},
"element2" : {
"generated_name_5" : {
"a" : {"isReady":false},
"g" : {"isReady":false}
}
},
"element3" : {
"a" : { "isReady":false},
"n":{}
}
}

我想遍历并删除每个具有与之关联的空值的元素,例如“generated_name_2”和“n”。我不知道这些元素的名称是什么,也不知道它在 JSON 树中嵌套了多远。

我知道我必须编写一个递归程序,这就是我想到的:

public static void cleanJsonNodes(ObjectNode myJsonNode){
for (JsonNode currentNode : myJsonNode){
if (currentNode.size() == 0){
myJsonNode.remove(currentNode);
} else {
cleanJsonNodes((ObjectNode)currentNode);
}
}
}

当然,这行不通,但我真的不确定从这里去哪里,我已经搜索了 Internet 无济于事。

请有人帮助我!

最佳答案

我还没有测试过,但你可能想要这样的东西:

public static void stripEmpty(JsonNode node) {
Iterator<JsonNode> it = node.iterator();
while (it.hasNext()) {
JsonNode child = it.next();
if (child.isObject() && child.isEmpty(null))
it.remove();
else
stripEmpty(child);
}
}

关于java - 如何使用 Jackson 删除 Java 中的空 json 节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19159596/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com