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

无法从OpenWeatherMap API获取温度,提取JSON中temp变量无结果

解决OpenWeatherMap API无法提取温度数据的问题

嘿,我碰到过好几个开发者遇到和你一模一样的问题,大概率是你没找对温度数据在JSON响应里的嵌套路径!先别急,咱们一步步排查:

最常见的原因:JSON结构路径错误

OpenWeatherMap的API响应里,weather和temp的位置完全不一样:

  • weather是一个数组,所以你能通过类似data.weather[0].main的方式拿到天气状况;
  • 而温度temp是嵌套在main对象里的,不是直接在根层级。

举个典型的当前天气API响应结构例子:

{
  "weather": [
    {
      "id": 800,
      "main": "Clear",
      "description": "clear sky"
    }
  ],
  "main": {
    "temp": 293.15, // 这里才是温度值(默认开尔文)
    "feels_like": 292.54,
    "humidity": 47
  }
}

快速修正步骤

  • 先打印完整响应结构
    在你的代码里加一行console.log(data),把整个API返回的JSON打出来,确认main对象是否存在,以及temp的位置。这是排查这类问题最有效的方法!

  • 调整温度提取的路径
    如果你之前拿天气的代码是这样:

    const weatherStatus = data.weather[0].main;
    

    那提取温度应该改成:

    const temperature = data.main.temp;
    
  • 确认API端点是否正确
    如果你调用的是5天预报API(/data/2.5/forecast),那温度的路径会更嵌套:data.list[0].main.temp,因为预报数据是按时间节点存在list数组里的。

示例完整代码

// 用fetch请求示例(记得替换成你的API密钥)
fetch('https://api.openweathermap.org/data/2.5/weather?q=London&appid=YOUR_API_KEY')
  .then(res => res.json())
  .then(data => {
    // 成功获取weather值的代码
    const weather = data.weather[0].main;
    console.log('天气状况:', weather);

    // 正确提取温度的代码
    const temp = data.main.temp;
    console.log('温度:', temp); // 如果要转成摄氏度,就写 temp - 273.15

    // 调试用:打印完整响应,确认结构
    console.log('完整API响应:', data);
  })
  .catch(err => console.log('请求出错:', err));

如果还是没结果,那大概率是你请求的API返回了异常结构(比如权限错误?但你能拿到weather的话应该不是),这时候看打印出来的完整响应,就能一眼找到问题啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 09:16:07