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" } .....]

FileX.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

おすすめ記事