如何在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
相关产品推荐
相关产品推荐

