【发布时间】:2020-04-26 12:46:54
【问题描述】:
我有一个大型 JSON 文件,它是一个包含许多对象的数组,我想将它们提交给接受批量数据上传的 API。我了解到我可以使用 jq 的流模式来避免将整个文件加载到内存中:
jq --stream -nc 'fromstream(1|truncate_stream(inputs))' < data.json | curl ...
我想批量处理这个,所以我要批量请求,例如,一次 100 个对象。
【问题讨论】:
-
不要忘记 -n 命令行选项!!!
-
我看到了那个建议,但我不清楚为什么。 “根本不读取任何输入!相反,过滤器使用 null 作为输入运行一次。这在将 jq 用作简单计算器或从头构造 JSON 数据时很有用。”没有它似乎也可以工作,我也不想将 jq 用作简单的计算器。如果它很重要,为什么 --stream 不暗示它?
-
是的,这可能有点令人困惑,但是如果您省略 -n ,那么您将丢失一个 JSON 实体。比较
echo 1 | jq -n --stream inputs和没有-n选项的相同事物。