如何将内部对象中的键与其父对象合并(取消嵌套)



这是一个示例输入:

{
"key1": "value",      
"key2": [
{"key3": 5, "key4": "value1"},  
{"key3": null, "key4": "value2"},  
{"key3": 9, "key4": "value3"}
]
}

示例输出:

{
"key1": "value",
"value1": 5,
"value2": null,
"value3": 9
}

这是由以下Python代码生成的:

new = {x['key4']: x['key3'] for x in old}
new['key1'] = old['key1']

我试图用jq来做这件事,但这是我得到的:

[.[] | {k1: .key1, k2: .key2 | map({ (.key4): .key3}) | add}]

得到

{
"key1": "value",
"key2": {
"value1": 5,
"value2": null,
"value3": 9
}
}

我想说缺少的是如何"合并"。对象中的键。我该怎么做呢?

如果您的输入JSON固定为在双引号中接受键/值,则表达式可以写成

[ {key1}, (.key2[] | { (.key4): .key3} ) ] | add

最新更新