Flutter中如何将列表转为指定格式Map并发送API请求?
解决Flutter向API发送数据格式不匹配的问题
当前问题分析
你现在的代码有两个关键问题:
- 处理ID列表时,没必要把ID转成字符串再转集合,反而增加了不必要的类型转换,而且最后没生成符合要求的数组结构。
- API请求里只构造了一个包含单个
availabilityId的Map数组,而不是根据每个选中ID生成对应的Map组成数组,这和Swagger要求的格式不匹配。
正确的处理方式
直接基于去重后的ID列表,生成Swagger要求的数组结构:
- 生成符合格式的请求数据:
// 先对选中的ID去重(假设_selectedId是List<int>类型) var distinctList = _selectedId.toSet().toList(); // 将每个ID转换成{"availabilityId": 数字}的Map,再组成列表 List<Map<String, dynamic>> requestData = distinctList .map((id) => {'availabilityId': id}) .toList();
- 修改Dio请求的data参数:
final response = await _dio.patch( 'users/my-availabilities', data: requestData, );
这样处理后,requestData的结构就是:
[ {"availabilityId": 16}, {"availabilityId": 17}, {"availabilityId": 8} ]
完全匹配Swagger要求的格式,就能解决报错问题了。
内容的提问来源于stack exchange,提问作者Mr.Robot
相关产品推荐
相关产品推荐

