jq 将 json 个文件组合成一个数组

jq combine json files into single array

我有几个 json 文件要合并。有些是对象数组,有些是单个对象。我想有效地将​​所有这些连接成一个数组。

例如:

[
  { "name": "file1" }
]
{ "name": "file2" }
{ "name": "file3" }

最后我想:

[
  { "name": "file1" }
  { "name": "file2" },
  { "name": "file3" },
]

我如何使用 jq 或类似工具执行此操作?

做到了:

jq -n '[inputs] | add' $(find . -name '*.json') > combined.json

以下说明了完成所需任务的有效方法:

jq -n 'reduce inputs as $in (null;
   . + if $in|type == "array" then $in else [$in] end)
' $(find . -name '*.json') > combined.json

-n 命令行选项是避免跳过第一个文件所必需的。