Flutter Web调用RESTful GET接口出现Map与List类型不匹配错误求助
问题原因
你的报错由EstateSearch模型字段定义和API返回结构不匹配导致:
你提供的API返回示例中,每个estate条目下的estateGroups字段为数组类型[],但你的EstateSearch类中将该字段定义为单个EstateGroup对象类型,JSON序列化解析该字段时,尝试将List转为Map<String,dynamic>,就抛出了你遇到的类型错误。
解决方案
- 修改EstateSearch模型的
estateGroups字段定义,将单个对象类型调整为列表类型:
// 原来的错误定义 EstateGroup estateGroups; // 修改后的正确定义 List<EstateGroup> estateGroups;
- 同步修改构造函数中对应字段的声明,如果你使用
json_serializable做自动序列化,修改完成后重新执行以下命令生成新的序列化代码即可:
flutter pub run build_runner build --delete-conflicting-outputs
排查小技巧
后续遇到同类类型不匹配报错时,可以在jsonDecode后逐层打印字段的运行时类型,快速定位不匹配的字段:
var decodedData = jsonDecode(response.body); // 打印estates下第一个条目的estateGroups类型 print(decodedData["estates"][0]["estateGroups"].runtimeType);
内容的提问来源于stack exchange,提问作者Emmon
相关产品推荐
相关产品推荐

