java - 从 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做,请帮忙!
解决方案
当我使用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);
}
}
}
}
问的答案帮助我在杰克逊库中编写逻辑。
推荐阅读
- c# - Asp.Net Core - 无缘无故返回 500
- mysql - Loopback 应用程序连接到 mysql 谷歌云
- javascript - Firebase Auth登录状态持久性不起作用
- laravel - Laravel 基于标签抓取相关模型
- javascript - 将数据作为对象传递给 mongoDb,将其用作查询和比较
- c++ - 高通六边形 600 处理器在 word32 上执行水平求和的最快方法是什么
- java - 如何在 JUnit 5 中替换 WireMock @Rule 注释?
- python - 如何在 Python 中完全禁用昂贵的日志记录任务
- r - RSelenium 和 Chrome 未显示完整页面
- android-espresso - 如何实现条件检查“如果”在 Espresso 中显示错误对话框