json - 逐个子元素查找元素并替换为子元素的值
问题描述
为了清楚起见,我有要转换为不同结构的结构的 JSON 数组。
[
{
"a": 1,
"b": 2,
"c": {
"d": 3
},
"e": {
"f": 4,
"g": {
"d": 8
}
}
},
{
"a": 5,
"b": 6,
"c": {
"d": 7
}
},
{
"a": 9,
"b": 10,
"c": {
"d": 11
},
"e": {
"f": 12,
"g": {
"d": 13
}
}
}
]
我想将其转换为:
[
{
"a": 1,
"b": 2,
"c": 3,
"e": {
"f": 4,
"g": 8
}
},
{
"a": 5,
"b": 6,
"c": 7
},
{
"a": 9,
"b": 10,
"c": 11,
"e": {
"f": 12,
"g": 13
}
}
]
所以每个形式的元素:
"c": {
"d": 3
}
我想转换为:
"c": 3
保证 JSON 在根对象中不会有 'd' 元素。
我试过了
jq \
'map(
with_entries(
.value = if .value."$oid" ? then "ObjectId(" + .value."$oid"+ ")" else .value end
)
)'
但它不适用于内部元素。
解决方案
稍作调整,在他的评论中发布的链接@hek2mgl 上接受的答案就可以很好地满足您的情况。
walk(if type == "object" and keys_unsorted == ["d"] then .d else . end)
推荐阅读
- rxjs - forkjoin 是同时还是一个一个地运行所有的 observables?
- javascript - 如何使用 nodejs 自动创建多个 ejs 文件
- javascript - 如何解决文档未附加到窗口的错误?
- c# - C#如何制作背景颜色未填充100%的标签
- excel - 如何在没有#NA错误的情况下传递不同维度的命名范围
- python - ImportError:无法导入 Django。蟒蛇路径
- python - 用硒刮不能点击可点击的文本
- python - 如何使用 discord.py 中的图像编辑消息?
- c++ - 如何在内部类中引用外部类的模板参数?
- angular - 如何以角度分别创建登录注册和主应用程序?