You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用json.load()无返回结果求助:从天气API提取JSON数据遇问题

问题排查与修正方案

嘿,我帮你看了下代码,发现几个导致json.load()没返回结果的关键问题,一个个来解决:

1. json.load()的使用错误

json.load()函数是用来从文件对象中加载JSON数据的,但你传入的response.text是字符串类型,这会导致解析失败或者无结果。正确的做法有两种:

  • 用json.loads(response.text)来解析字符串格式的JSON;
  • 更推荐使用Requests库自带的response.json()方法,它会自动帮你处理JSON解析,代码更简洁。

2. URL中的转义字符错误

你URL里的&是HTML的转义字符,直接放在请求URL里会被API识别成无效参数,应该替换成普通的&符号,这样API才能正确解析language和details这些参数。

3. 缺失有效的API密钥

你的api_key是空字符串,AccuWeather API需要有效的密钥才能返回数据,你得先去获取一个合法的API密钥填进去,否则请求会被权限拒绝。

修正后的完整代码

import requests
import json

def get_weather_from_api(location_id):
    api_key = '你的AccuWeather API密钥'  # 替换成你的有效密钥
    # 修正URL中的转义字符
    url = f'http://dataservice.accuweather.com/currentconditions/v1/{location_id}?apikey={api_key}&language=en-us&details=false'
    response = requests.get(url)
    
    # 先检查请求是否成功,方便排查问题
    if response.status_code == 200:
        # 使用requests自带的json()方法解析数据
        data = response.json()
        print(data)
    else:
        # 打印错误信息,帮助定位问题(比如密钥无效、location_id错误等)
        print(f"请求失败,状态码: {response.status_code}")
        print(f"响应内容: {response.text}")

额外排查技巧

如果还是有问题,可以先打印response.text看看API返回的具体内容——如果是错误提示(比如密钥无效、location_id不存在),就能直接知道下一步该调整什么。

内容的提问来源于stack exchange,提问作者Sydwell

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 16:32:42