为了清楚起见,我具有要转换为其他结构的结构的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
)
)'
但不适用于内部元素。
答案 0 :(得分:2)
稍作调整,在他的评论中张贴的@ hek2mgl链接上的可接受答案就可以满足您的情况。
walk(if type == "object" and keys_unsorted == ["d"] then .d else . end)