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
相关产品推荐
相关产品推荐

