我有一个包含约100个JSON文件的目录,每个文件都是100个简单记录的数组。我想将它们合并为一个文件,并将其包含为应用程序中的静态数据,这样就不必反复调用API以检索小块数据。(我限制了一次仅能下载100条记录;这就是为什么我有100个短文件的原因。)
以下是一个示例文件,缩短为两条记录以在此显示:
以下是一个示例文件,缩短为两条记录以在此显示:
[
{
"id": 11531,
"title": "category 1",
"count": 5
},
{
"id": 11532,
"title": "category 2",
"count": 5
}
]
我的研究得出了一个解决方案,但只适用于每个文件有两条记录的两个文件:
jq -s '.[0] + .[1]' file1.json file2.json > output.json
这个源码还建议使用以下代码来处理一个目录(当前目录中只有两个文件):
jq -s 'reduce .[] as $item ({}; . * $item)' json_files/* > output.json
但我收到一个错误:
jq: error (at json_files/categories-11-20.json:0): object ({}) and array ([{"id":1153...) cannot be multiplied
我原以为问题可能是*
在尝试乘法,所以我试着替换成+
,但是出现了...无法相加
的信息。
是否有通过jq实现这个功能的方法,或者有更好的工具可供使用?
.[0] + .[1]
?你能提供一下你想要输出的样本吗?(比如,你是否想要一个由各个数组中所有记录组成的单个数组?) - chepner.[0] + .[1]
能够满足你的需求,那么一般化的方法是jq -s add json_files/* > output.json
。 - chepner+
运算符。我已经在上面进行了修正。 - tangobango