首页 > 解决方案 > bashscript 将多个json文件合并为一个json

问题描述

我有一个文件夹,其中包含 json 文件的子文件夹。

我需要编写一个 bash 脚本,将所有 json 文件组合成一个大的有效 json。

1)首先尝试使用jq首先将所有json文件合并到每个目录中,然后我需要再次将所有文件合并到一个大文件中。我没能成功。我使用了这个命令:

jq -rs 'reduce .[] as $item ({}; . * $item)'

2)其他选项是在开头创建一个json文件,以“[”->处理所有目录中的所有文件,并为每个文件附加内容->在末尾附加“]”。

我可以仅使用 jq 以第一种方式获得相同的结果吗?

标签: jsonbashjq

解决方案


一个非常简单的方法是:

jq -s 'flatten' $target/*/*.json > $merged_json

另一种选择(在您需要使用的情况下|):

cat $target/*/*.json | jq -s 'flatten' > $merged_json

或者如果文件太多

find $target/* -name \*json cat {} |  jq -s 'flatten' > $merged_json

推荐阅读