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

Flutter-Dart中如何创建动态数据嵌套Map的独立副本?

深度复制嵌套Map/List的简洁方案

在Dart中,要实现嵌套Map和List的完全深度复制(生成完全独立的新对象),最简洁高效的方法是利用JSON序列化与反序列化——服务器返回的动态数据通常都是JSON可序列化的类型(基本类型、Map、List),正好适配这种方案。

实现代码

import 'dart:convert';

// 一行代码完成深度复制
Map<String, dynamic> myMap2 = json.decode(json.encode(myMap)) as Map<String, dynamic>;

原理说明

  1. json.encode(myMap):递归遍历整个嵌套结构,将所有层级的Map、List和基本类型转换为JSON字符串,彻底脱离原对象的引用关系。
  2. json.decode(...):将JSON字符串重新解析为全新的Map和List实例,所有嵌套集合都是独立的新对象,修改myMap或myMap2的任何层级都不会互相影响。

优势

  • 无需手动编写递归遍历逻辑,自动处理任意深度的嵌套结构,完美适配服务器返回的动态不可预测数据。
  • 代码极简,一行实现需求,维护成本低。

注意事项

如果数据中包含JSON不可序列化的自定义对象,这个方法不适用。但服务器返回的动态数据一般都是标准JSON类型(int、String、bool、Map、List等),所以完全适用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 05:57:46