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

时间:2017-07-07 09:04:10

标签: arrays json jq

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

file_1.json: {"myArray":[{a},{b}]}
...
file_n.json: {"myArray":[{n},{m}]}

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

result_file.json: [{a},{b},...,{n},{m}]

所以,我只想要一个数组,其中包含可以在不同输入的“myArray”数组中找到的所有对象。

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

type file_1.json file_n.json | jq ".result[]" > result_file.json

(在Linux上用cat替换类型)

如何才能使格式正确?

1 个答案:

答案 0 :(得分:4)

你可以“啜饮”你的输入:

  

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

(man jq)

就像那样:

1.json

{"myArray":[1,2,3]}

2.json

{"myArray":[3,4,5]}

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

[
  1,
  2,
  3,
  3,
  4,
  5
]