使用jq将多个文件中的Data数组内容合并至一个主数组
使用jq合并多JSON文件的Data数组
要实现提取每个JSON文件的Data数组内容,合并成包含Everything数组的目标结构,直接用这条jq命令即可:
jq -n '{Everything: [inputs.Data[]]}' file1.json file2.json ...
命令说明
-n:让jq以空输入启动,避免首个文件的顶层结构干扰最终输出inputs.Data[]:遍历所有输入的JSON文件,提取每个文件里的Data数组并展开其中的每一个元素{Everything: [...]]:将所有展开的元素统一包裹到Everything数组中,生成你需要的JSON结构
示例验证
假设你有两个测试文件:
file1.json:
{ "Brand":"brand", "Fulfilled":5600, "Total":5626, "Data":[ {"data":"data1"}, {"data":"data2"} ] }
file2.json:
{ "Brand":"brand2", "Fulfilled":3000, "Total":3005, "Data":[ {"data":"data3"}, {"data":"data4"} ] }
执行命令后会输出:
{ "Everything": [ {"data": "data1"}, {"data": "data2"}, {"data": "data3"}, {"data": "data4"} ] }
实用补充
- 若要将结果保存到新文件,添加重定向即可:
jq -n '{Everything: [inputs.Data[]]}' *.json > merged.json - 同目录下JSON文件较多时,用
*.json匹配所有文件,无需逐个输入文件名
内容的提问来源于stack exchange,提问作者ClassyUnderexposure
相关产品推荐
相关产品推荐

