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

Flutter JSON解析异常:List<dynamic>无法转为Map<String, dynamic>求助

解决JSON解析类型不匹配的问题

我太懂这种卡壳到头疼的感觉了!你遇到的类型'List<dynamic>'不是'Map<String, dynamic>'的子类型错误,核心原因就是两种场景的JSON结构完全不同,解析逻辑得跟着对应调整。

先把两种场景的结构差异理清楚:

  • 场景1(JSON树视图1):JSON根节点是一个对象,文章数据嵌套在articles字段对应的列表里
  • 场景2(JSON树视图2):JSON根节点直接就是文章列表,没有外层的对象包裹

你之前写的场景2代码之所以报错,是因为解析函数的参数还在要求Map<String, dynamic>,但实际传入的是List类型,自然会触发类型不匹配的异常。

场景2的正确解析代码

直接把解析函数的参数类型改成List<dynamic>,然后对这个列表做转换即可:

ResponseTopHeadlinesNews _$ResponseTopHeadlinesNewsFromJson(List<dynamic> json) {
  return ResponseTopHeadlinesNews(
    json?.map((e) => e == null ? null : Article.fromJson(e as Map<String, dynamic>))?.toList(),
  );
}

额外小提醒

如果你的代码是用json_serializable自动生成的,可能需要手动覆盖这个解析函数——因为默认生成的逻辑是针对根节点为对象的情况,而场景2是根节点为列表,属于特殊场景,需要单独处理。

这样调整后,就能顺利解析根节点为列表的JSON数据啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 12:27:43