如何使用 JQ 合并多个 json 文件中的数组?

如何使用 JQ 合并多个 json 文件中的数组?

我有多个具有相同结构的 JSON 文件,列表是数组。

$ jq 'keys' file_1.json
[
  "itemsPerPage",
  "links",
  "list",
  "startIndex"
]

列表字段看起来像这样

文件1.json

 "list" : [ {"id: 123, "fname":"SAM" }, {"id: 125, "fname":"JOE" } .....]

文件X.json

 "list" : [ {"id: 783, "fname":"Danny" }, {"id: 785, "fname":"Kingmo" } .....]

尝试生成如下输出(仅列出并忽略其他字段,即 itemsPerPage/links/startIndex)

 "list" : [ {"id: 123, "fname":"SAM" }, {"id: 125, "fname":"JOE" },  {"id: 783, "fname":"Danny" }, {"id: 785, "fname":"Kingmo" }]

使用 jq 读取所有这些文件并生成一个包含一个列表数组的文件(其中包含所有 JSON 文件中的所有对象)的最佳方法是什么?

答案1

您可以使用inputs函数将所有 JSON 文件的内容放在一起,并仅将字段附加.list在一起

jq -n '{ list: [ inputs.list ] | add }' file1.json file2.json

相关内容