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

Flutter中JSON空数组与空对象混合字段如何正确赋值给显式类型变量

报错根本原因

你看到的矛盾报错是接口返回的data字段类型不统一导致的:你后续核查也提到,列表嵌套的对象中,部分对象的data取值为空对象{},部分为空数组[]。

  • 当接口返回的data为{}时,你用List<dynamic>类型接收就会抛出_InternalLinkedHashMap不能转换为List的错误
  • 当接口返回的data为[]时,你用Map<String, dynamic>类型接收就会抛出List不能转换为Map的错误

你之前用var声明中间变量测试时刚好命中了data返回[]的场景,所以赋值给List类型变量运行正常,并不是中间变量解决了类型不匹配问题,只是测试场景刚好匹配了对应类型。


无需中间变量的赋值方案

方案1:兼容两种返回类型(推荐)

先做运行时类型判断,再对应处理,可适配data既可能是数组也可能是对象的场景:

// 示例:统一将data转为List类型,空对象时返回空数组
List<dynamic> result = json["data"] is List ? json["data"] : [];

// 如果需要保留空对象的场景,也可以声明为dynamic类型接收
dynamic result = json["data"];

方案2:显式强转(仅确认返回类型时使用)

如果业务逻辑已经确定本次请求返回的data一定是数组类型,可以用as关键字直接强转:

List<dynamic> result = json["data"] as List<dynamic>;

内容的提问来源于stack exchange,提问作者Chen Li Yong

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 14:54:03