这是一个示例输入:
{
"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