如何使用requests.get访问格式为JSON的文本的URL,另存为字典

时间:2015-07-27 04:31:38

标签: python json dictionary python-requests

我正在尝试使用请求访问格式为JSON的文本的URL。在下面的代码中,一切正常,但我希望它是一个字典,但我请求的响应类型是:'class method'(我第一次打印了错误对象的类型)。如何将信息作为字典?

import requests
import json 
r=requests.get('https://s3-us-west-1.amazonaws.com/riot-api/seed_data/matches1.json')
match_histories = r.json()
print(type(match_histories))

代码永远不会超越

match_histories = r.json()

它只是说它的运行(它没有冻结)。

但是,如果我下载文件并尝试它,它可以工作(我希望它直接从网站下载)

with open('matches1', 'r') as json_file:
    match_histories = json.load(json_file)
match_histories['matches']

产生我所希望的东西。

我读到了有关在JSON here上使用请求的信息。

请注意,文件非常大,并且字体的格式适当。

我要加载的文件可以是downloaded,但结构基本上是:

{
    "matches": [
        {
            "matchId": 1778839570,
            "region": "NA",
            "platformId": "NA1",
            "matchMode": "CLASSIC",
            "matchType": "MATCHED_GAME",
            "matchCreation": 1427867835805,
            "matchDuration": 3424,
            "queueType": "RANKED_SOLO_5x5",
            "mapId": 11,
            "season": "SEASON2015",
            "matchVersion": "5.6.0.194",
            "participants": [
                // more dictionaries
                ],
            "participantIdentities": [
                // more dictionaries
            ],
            "teams": [
                // more dictionaries
            ],
            "timeline": {
                "frames": [
                    // many frame dictionaries
                ],
                "frameInterval": 60000
            }
        },

        // more dictionaries
    ]
}

答案可能很简单。我很抱歉,我是Python /编程的新手。

如何将URL中的信息保存为字典?

它有效,永远。为什么步骤

match_histories=r.json() 

需要比

更长的时间
match_histories =json.load(json_file)

1 个答案:

答案 0 :(得分:2)

您需要调用响应对象的方法.json()

r = requests.get('https://s3-us-west-1.amazonaws.com/riot-api/seed_data/matches1.json')
match_histories = r.json()