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

Flutter中jsonDecode报错:期望String类型,实际得到_JsonMap类型

解决Dio解析API响应时的类型错误问题

你的问题根源很明确:Dio会自动将JSON格式的响应体解析成Map<String, dynamic>(也就是你看到的_JsonMap类型),但你却多做了一步jsonDecode(response.data)——而jsonDecode()要求参数是字符串类型,这就导致了类型不匹配的报错。

直接去掉jsonDecode()步骤即可解决问题,修正后的代码如下:

Future<Artwork> getArtwork() async {
  final dio = Dio();
  final response = await dio.get('你的本地API接口地址');

  if (response.statusCode == 200) {
    // response.data已经是解析好的Map,直接传给fromJson
    return Artwork.fromJson(response.data as Map<String, dynamic>);
  } else {
    throw Exception('获取Artwork失败,状态码:${response.statusCode}');
  }
}

你之前尝试的http.StreamedRequest、用[]包裹JSON这些操作都是无效的,因为核心问题是没意识到Dio自带JSON自动解析功能,完全不需要手动再去解码字符串。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 03:20:30