【发布时间】:2019-12-27 21:59:46
【问题描述】:
通过特定标签/键从整个 JSON 中删除任意值的简单方法是什么?我的 JSON 可能有任意深度,所以按标签删除应该递归完成。
{
"root": [
{
"name": "blah 1",
"remove": [ 1, 2, 3 ],
"new list": [
{
"name": "blah 2",
"remove": null,
"new list": [
{
"name": "blah 3",
"remove": [
{
"name": "blah 4",
"new list": []
},
{
"name": "blah 5",
"new list": []
}
]
}
]
},
{
"name": "blah 6",
"new list": []
}
]
}
]
}
我想删除标签为"remove"的所有元素,这样最终的结果会是这样的:
{
"root": [
{
"name": "blah 1",
"new list": [
{
"name": "blah 2",
"new list": [
{
"name": "blah 3"
}
]
},
{
"name": "blah 6",
"new list": []
}
]
}
]
}
使用sed/awk 会产生意想不到的结果(尤其是在要删除嵌套对象时),因此它必须是像 jq 或类似的 JSON 感知实用程序。
【问题讨论】:
标签: json bash recursion key jq