Python如何打印API返回JSON中services的status值
解决Riot Games API获取服务状态的问题
我看你已经成功拿到了Riot API返回的JSON数据,但卡在了获取services里的status值上——这是因为你忽略了JSON里services的结构:它是一个数组(Python里的列表),而不是单个字典。
先看你拿到的JSON结构片段:
"services": [ { "status": "online", "incidents": [...] } ]
注意services外面的方括号[],这说明它是一个包含多个服务对象的列表,哪怕里面只有一个元素,也得先通过索引访问到这个元素,再去取status键。
修正后的代码实现
你可以直接在现有代码基础上调整,甚至简化JSON解析步骤:
link = "https://na1.api.riotgames.com/lol/status/v3/shard-data?api_key={}".format(API_KEY) rq_response = rq.get(link) rq_json = rq_response.json() # 直接用response.json()解析,无需手动处理文本 # 获取第一个服务的status值并打印 print(rq_json['services'][0]['status'])
更稳妥的写法(避免索引错误)
如果担心返回的services列表为空,建议加个判断逻辑防止报错:
if 'services' in rq_json and len(rq_json['services']) > 0: print(rq_json['services'][0]['status']) else: print("无法获取服务状态数据")
这样就能顺利打印出online这个状态值啦!
内容的提问来源于stack exchange,提问作者KowaiiNeko
相关产品推荐
相关产品推荐

