使用jq从多个输入对象生成单个JSON数组

vol*_*and 0 arrays json jq

我确实有几个类似的JSON对象(例如,在文件中):

file_1.json: {"myArray":[{a},{b}]}
...
file_n.json: {"myArray":[{n},{m}]}
Run Code Online (Sandbox Code Playgroud)

我想使用jq和Linux或Windows命令行工具将所有这些文件转换为以下格式的一个输出:

result_file.json: [{a},{b},...,{n},{m}]
Run Code Online (Sandbox Code Playgroud)

因此,我只想要一个具有所有对象的数组,这些对象可以在“ myArray”数组中从不同的输入中找到。

当前,我使用此命令来分隔对象,但不创建包含它们的数组:

type file_1.json file_n.json | jq ".result[]" > result_file.json
Run Code Online (Sandbox Code Playgroud)

(在Linux上用cat替换类型)

如何获得正确的格式?

zep*_*lin 5

您可以“输入”您的输入:

-s将所有输入读取(吸取)到数组中;对它应用过滤器;

(男人jq)

像那样:

1.json

{"myArray":[1,2,3]}
Run Code Online (Sandbox Code Playgroud)

2.json

{"myArray":[3,4,5]}
Run Code Online (Sandbox Code Playgroud)

%jq -s '[.[].myArray[]]' 1.json 2.json

[
  1,
  2,
  3,
  3,
  4,
  5
]
Run Code Online (Sandbox Code Playgroud)