我是flutter开发的初学者,目前正在使用dio处理API调用。目前打印后的响应显示格式正确。但在解析会话中,我遇到了这样的错误**“type 'List' is not a subtype of type 'Map〈String,dynamic〉'”**
我的模特课
import 'package:object_mapper/object_mapper.dart';
class BottomNavListItem with Mappable {
int? id;
String? name;
@override
void mapping(Mapper map) {
map("id", id, (v) => id = v);
map("name", name, (v) => name = v);
}
}
响应处理类
Future<List<BottomNavListItem>?> getFamilyStatus(String url) async {
Response response;
List<BottomNavListItem>? bottomNavListModel;
try {
response = await WebUtil.createDio().get(url);
if (kDebugMode) {
print(response.data.toString());
}
bottomNavListModel =
Mapper.fromJson(response.data).toObject<List<BottomNavListItem>>();
} on DioError catch (e) {
print(response.data.toString());将打印:**[{id:1,name:test},{id:2,name:MiddleClass},{id:3,name:UpperMiddleClass},{id:4,name:Rich}]**这是正确格式的JSON数组。任何人都知道一个解决方案,请帮助....
3条答案
按热度按时间jbose2ul1#
你需要像这样解析数据
和更新模型
toe950272#
您得到的响应是一个Map列表
所以你不能直接在响应上使用Mapper.fromJson(response.data)。
你可以迭代每一项并调用
Mapper.fromJson(response[i].data)
,这可能会有所帮助。或者为了更容易地调试,您可以尝试使用
print(response.runTimeType)
来找出响应的runTimeTypevnjpjtjt3#
从Dio得到的结果是一个Map列表(不是Map),可能是一个List〈Map〈String,dynamic〉〉。
你需要将它的每一项转换为
BottomNavListItem
,如下所示: