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

如何在Dart中向已存在的对象中插入元素?

如何在Dart中向已存在的对象中插入元素?

你的代码核心问题是把sale这个Map对象当成List处理了,delivery['sale']本质是Map<String, dynamic>,不是List,所以不能用List的addAll方法。要向已存在的Map对象插入元素,直接通过键赋值即可。

原示例对象

"sale": {
   "id": 3,
   "name": "COCA"
}

原错误代码

return (response.data['deliveries'] as List).map((delivery) {
      List<void> el = delivery['sale'];

      el.addAll(['price', 500]);
      
    }).toList();

期望得到的对象

"sale": {
    "id": 3,
    "name": "COCA",
    "price": 500
}

修正后的代码

return (response.data['deliveries'] as List).map((delivery) {
  // 将sale转换为正确的Map类型
  Map<String, dynamic> saleMap = delivery['sale'] as Map<String, dynamic>;
  // 直接通过键值对的方式插入新元素
  saleMap['price'] = 500;
  // 返回处理后的delivery,确保map操作能生成有效列表
  return delivery;
}).toList();

关键说明

  • Dart中,JSON对象对应的是Map类型,不是List,必须用Map的操作方式来添加元素。
  • 向Map添加新元素最直接的方式就是map[key] = value,这会自动在Map中新增该键值对(如果键不存在),或者覆盖已有键的值(如果键已存在)。
  • 注意在map的回调函数中一定要返回处理后的delivery对象,否则最终生成的列表会是全null的无效列表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 17:25:23