我有一个文件" stats.json"具有以下初始结构"
[{
"price": 66.55,
"created": "2018-02-24T14:32:57"
}]
使用bash / curl脚本我每隔10分钟从api获取数据并将其保存到" temp.json"
{
"price": 88.55,
"created": "2018-02-24T15:32:57"
}
我想合并temp.json(每10分钟更新一次)并填充stats.json文件。我尝试用" jq"但没有成功。
答案 0 :(得分:3)
将temp.obj中的项添加到stats.json中的数组的一种方法:
jq —-slurpfile temp temp.obj '. + $temp' stats.json
另一种方式:
jq —s '.[0] + [.[1]]' stats.json temp.json
(如果你想覆盖stats.json,那么我建议使用sponge
,如下图所示。)
但是,如果可能的话,将stats.json维护为JSONL格式的日志文件几乎肯定会更好:http://jsonlines.org/
也就是说,temp.json中的每个对象都会作为一行附加到stats.json:
jq -c temp.json >> stats.json
这当然假设stats.json最初为空或已经是JSONL格式。要将现有的stats.json转换为JSONL,您可以执行以下操作:
cp -p stats.json stats.json.bak
jq -c .[] stats.json | sponge stats.json