Python `requests` 获取 JSON 响应的生成器对象

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

我正在使用 Python 的

requests
库来获取巨大的 JSON 响应。

通常,当我这样做时

data = resp.json()
大约需要 5 秒。

然后我尝试了

ujson
作为
data = ujson.loads(resp.text)
,大约花了2秒。

有没有办法可以从响应中获得类似

generator
的对象?我知道我们有可用的
streaming
设施,但我想这会给我分块的数据,而我需要 每个元素 的数据,因为我可以在
for
循环上迭代它。

虽然这一切都是为了进一步缩短时间,但上述方法可能吗?或者有没有其他方法可以实现这一点(我也对任何其他图书馆开放)?

谢谢!

python json python-2.7 python-requests
1个回答
0
投票

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)

演示:https://replit.com/@blhsing1/DeliriousLustrousSubweb

© www.soinside.com 2019 - 2024. All rights reserved.