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

Flutter调用OpenWeatherMap API获取天气值出现类型报错问题

问题根因

你遇到的类型报错,是对API返回的JSON字段层级判断失误导致的。
对照返回的示例结构,weather字段不是普通的键值对字典,而是一个只包含单条天气信息的数组:

"weather": [{"id":721,"main":"Haze","description":"haze","icon":"50n"}]

你原代码里写的weatherData['weather']['main'],相当于拿到数组之后,直接用字符串'main'当索引去取数组元素——数组只支持整数索引,用字符串当索引自然会抛出「String类型无法作为int类型索引」的错误。

修正方法

取值时先定位数组里的第一个元素(也就是索引号0的位置),再读取内部的main字段就行。
把原代码中错误的取值行:

count: weatherData['weather']['main'].toString(),

替换为正确的取值路径:

count: weatherData['weather'][0]['main'].toString(),

这样就能正常拿到Haze这个天气状态值了。
补充说明:你之前写的weatherData['main']['temp']这类取值没有报错,是因为main字段本身就是标准字典结构,和weather的数组结构不一样,所以取值逻辑是通顺的。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.28 06:45:11