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

Dart解析JSON报错:dynamic无法赋值给Iterable<dynamic>参数

报错原因
  • 你声明的fromJson方法入参是Map<String, dynamic>,取值时json['empresas']的静态类型为dynamic,而List.from()方法要求入参必须是Iterable类型,编译器无法确认传入的dynamic值一定是可迭代的集合,因此抛出类型不匹配错误。
  • 你贴出的JSON示例本身存在语法错误:empresas数组和根对象缺失闭合的]、},实际接口返回需保证是合法JSON结构,否则json解码阶段就会报错。
  • 原写法中List.from(json['empresas'])属于冗余逻辑:json解码后得到的数组本身就是List类型,不需要额外用List.from做一次拷贝。
修复方法

将原解析empresas字段的代码替换为以下写法即可:

empresas = (json['empresas'] as List)
  .map((e) => Empresas.fromJson(e as Map<String, dynamic>))
  .toList();

如果需要兼容接口偶发返回empresas为null的场景,避免空指针崩溃,可以用空保护写法:

empresas = (json['empresas'] as List? ?? [])
  .map((e) => Empresas.fromJson(e as Map<String, dynamic>))
  .toList();

代码逻辑说明:

  • 先将json['empresas']显式强转为List类型,满足可迭代的类型要求
  • 遍历数组时将每个元素强转为Map<String, dynamic>,匹配Empresas.fromJson的入参类型,规避后续动态类型隐患
  • 空保护写法中如果empresas字段为null,会直接赋值为空数组,不会触发运行时错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 20:45:36