从另一个带有“ jq”的json文件附加到json文件中的数组

问题描述 投票:0回答:1

我有一个具有以下初始结构的文件“ 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”来做,但是没有成功。

json bash logging jq jsonlines
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.