如何使用 jq 将字典列表合并为一个字典
How to use jq to merge a list of dictionaries into one dictionary
我正在命令行上开发 jq 表达式。 (我打算在python中使用带pyjq
的表达式来解析http请求。)
以下命令行:
$ cat some.json | jq '.collection.rows[].rowAnswers | map({ (.refCode) : .answers[0].responseText }) '
结果有两项。
[
{
"NAME": "some_name1"
},
{
"CODE": "code1"
},
{
"SERVER"": "server1"
}
]
[
{
"NAME": "name2"
},
{
"CODE": "code2"
},
{
"SERVER"": "server2"
}
]
这是一个不错的中间步骤。我想将每个词典列表合并到一个词典中。我希望最终结果是:
{
"NAME": "some_name1"
"CODE": "code1"
"SERVER"": "server1"
}
{
"NAME": "name2"
"CODE": "code2"
"SERVER"": "server2"
}
如果这太难了,那么[merge_dict][merge_dict]
也很好。
不会有任何按键冲突。此外,这是简化的输出。我想要一个将所有 kv 对合并到一个字典中的表达式。我不想在表达式中硬编码键的实际名称。
谢谢。
根据您的描述,似乎只需将 add
添加到您的管道即可实现您描述的“最终结果”。
我正在命令行上开发 jq 表达式。 (我打算在python中使用带pyjq
的表达式来解析http请求。)
以下命令行:
$ cat some.json | jq '.collection.rows[].rowAnswers | map({ (.refCode) : .answers[0].responseText }) '
结果有两项。
[
{
"NAME": "some_name1"
},
{
"CODE": "code1"
},
{
"SERVER"": "server1"
}
]
[
{
"NAME": "name2"
},
{
"CODE": "code2"
},
{
"SERVER"": "server2"
}
]
这是一个不错的中间步骤。我想将每个词典列表合并到一个词典中。我希望最终结果是:
{
"NAME": "some_name1"
"CODE": "code1"
"SERVER"": "server1"
}
{
"NAME": "name2"
"CODE": "code2"
"SERVER"": "server2"
}
如果这太难了,那么[merge_dict][merge_dict]
也很好。
不会有任何按键冲突。此外,这是简化的输出。我想要一个将所有 kv 对合并到一个字典中的表达式。我不想在表达式中硬编码键的实际名称。
谢谢。
根据您的描述,似乎只需将 add
添加到您的管道即可实现您描述的“最终结果”。