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

Flutter中Dio.get请求JSON解析类型不匹配错误的解决咨询

解决Dio请求Airtable后的JSON解析问题

问题根源

Dio默认会自动将JSON格式的响应体解析为Map<String, dynamic>或List类型,所以你拿到的response.data已经是解析好的对象,不需要再调用json.decode()。

  • 第一个错误:json.decode()要求参数是字符串,但你传了已经解析好的_InternalLinkedHashMap,类型不匹配导致报错。
  • 第二个错误:把Map转成toString()后得到的不是标准JSON格式(比如会包含非JSON规范的内容),所以解码时触发FormatException。

直接获取id字段的解决方案

直接使用response.data即可,结合Airtable的常规响应结构(返回包含records数组的对象),示例代码如下:

// 假设你的请求代码大致如下
final response = await Dio().get('你的Airtable接口地址');

// 直接使用已解析的response.data
final Map<String, dynamic> responseData = response.data;
final List<dynamic> records = responseData['records'];

// 遍历records获取每个记录的id
for (var record in records) {
  String recordId = record['id'];
  print('记录ID: $recordId');
  // 若需要获取字段内容,可使用 record['fields']['你的字段名']
}

验证数据类型(可选)

如果不确定response.data的类型,可以先打印类型确认:

print(response.data.runtimeType);

正常情况下会输出_InternalLinkedHashMap<String, dynamic>,证明已经是解析后的Map对象。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 15:36:08