【发布时间】:2016-08-30 15:51:27
【问题描述】:
我从curl 获得了一个非常大的 JSON 流(几 GB)并尝试使用 jq 处理它。
我想用jq解析的相关输出被打包在一个代表结果结构的文档中:
{
"results":[
{
"columns": ["n"],
// get this
"data": [
{"row": [{"key1": "row1", "key2": "row1"}], "meta": [{"key": "value"}]},
{"row": [{"key1": "row2", "key2": "row2"}], "meta": [{"key": "value"}]}
// ... millions of rows
]
}
],
"errors": []
}
我想用jq 提取row 数据。这很简单:
curl XYZ | jq -r -c '.results[0].data[0].row[]'
结果:
{"key1": "row1", "key2": "row1"}
{"key1": "row2", "key2": "row2"}
但是,这总是等到curl 完成。
我使用了用于处理此问题的 --stream 选项。我尝试了以下命令,但也在等待从 curl 返回完整对象:
curl XYZ | jq -n --stream 'fromstream(1|truncate_stream(inputs)) | .[].data[].row[]'
有没有办法“跳转”到data 字段并开始一一解析row 而无需等待结束标签?
【问题讨论】: