我正在使用 Python 的
requests
库来获取巨大的 JSON 响应。
通常,当我这样做时
data = resp.json()
大约需要 5 秒。
然后我尝试了
ujson
作为data = ujson.loads(resp.text)
,大约花了2秒。
有没有办法可以从响应中获得类似
generator
的对象?我知道我们有可用的 streaming
设施,但我想这会给我分块的数据,而我需要 每个元素 的数据,因为我可以在 for
循环上迭代它。
虽然这一切都是为了进一步缩短时间,但上述方法可能吗?或者有没有其他方法可以实现这一点(我也对任何其他图书馆开放)?
谢谢!
json-stream
模块直接支持从requests
响应流式传输 JSON 文档。
以流式传输约 211MB 的全球 COVID-19 统计数据 JSON 文档为例:
import requests
import json_stream.requests
json_url = 'https://covid.ourworldindata.org/data/owid-covid-data.json'
with requests.get(json_url, stream=True) as response:
data = json_stream.requests.load(response)
for name, record in data.items():
print('Region:', name)
for key, value in record.items():
if key == 'data':
for entry in value:
for k, v in entry.items():
print(k, v)
else:
print(key, value)