根据数组的任意键合并 JSON 个数组
Merge JSON arrays based on arbitrary keys to arrays
使用 jq
或 jtc
,我想将 json 个文件的列表作为输入,并根据以下键生成单个 json 文件在每个输入文件中找到的数组。示例:
第一个文件:
{
"key1": [
"key1-out1"
]
}
第二个文件:
{
"key1": [
"key1-out2"
]
}
第 3 个文件:
{
"key2": [
"key2-out1"
]
}
预期输出:
{
"key1": [
"key1-out1"
"key1-out2"
],
"key2": [
"key2-out1"
]
}
我遇到了this almost perfectly good answer但是我不能直接使用它,因为我不知道在每个输入文件中我会得到什么键
如果任何文件有多个密钥:
jq -n 'reduce inputs as $in ({};
reduce ($in|keys_unsorted)[] as $k (.;
.[$k] += $in[$k]))' file1 file2 file3 # ...
您可能想要对此进行调整,以便在与键关联的值意外地不是数组时它不会失败。
如果您使用 gojq(jq 的 Go 实现),您将使用 keys
而不是 keys_unsorted
。
使用 jq
或 jtc
,我想将 json 个文件的列表作为输入,并根据以下键生成单个 json 文件在每个输入文件中找到的数组。示例:
第一个文件:
{
"key1": [
"key1-out1"
]
}
第二个文件:
{
"key1": [
"key1-out2"
]
}
第 3 个文件:
{
"key2": [
"key2-out1"
]
}
预期输出:
{
"key1": [
"key1-out1"
"key1-out2"
],
"key2": [
"key2-out1"
]
}
我遇到了this almost perfectly good answer但是我不能直接使用它,因为我不知道在每个输入文件中我会得到什么键
如果任何文件有多个密钥:
jq -n 'reduce inputs as $in ({};
reduce ($in|keys_unsorted)[] as $k (.;
.[$k] += $in[$k]))' file1 file2 file3 # ...
您可能想要对此进行调整,以便在与键关联的值意外地不是数组时它不会失败。
如果您使用 gojq(jq 的 Go 实现),您将使用 keys
而不是 keys_unsorted
。