Dart解析天气API JSON时出现String不是int类型index子类型错误
错误原因
报错和你最终要提取的两个int类型字段无关,问题出在JSON节点的访问路径上:
从你提供的JSON结构可以看到forecast下的forecastday是数组类型(由[]包裹),Dart中访问数组元素必须使用int类型的下标,你的代码直接用字符串"day"作为数组的索引,因此触发了type 'String' is not a subtype of type 'int' of 'index'的类型错误。
修复代码
你请求参数指定了days=1,只需要取数组的第一个元素(下标为0)即可,修改后的字段提取逻辑如下:
will_it_rain = result["forecast"]["forecastday"][0]["day"]["daily_will_it_rain"] as int?; chance_of_rain = result["forecast"]["forecastday"][0]["day"]["daily_chance_of_rain"] as int?;
建议添加显式的as int?类型转换,避免Dart动态类型推断带来的潜在类型问题。
内容的提问来源于stack exchange,提问作者Raúl Peñate
相关产品推荐
相关产品推荐

