在Dart/Flutter中从Map提取货币代码至列表
提取Map中的货币代码生成目标列表
假设你的currencyMap已经按Dart语法规范定义(注意字符串类型的键必须添加引号),可以通过以下方式提取出目标格式的currencyList:
完整实现代码
// 先修正原Map的语法问题,Dart中字符串键需加引号 Map<String, dynamic> currencyMap = { 'status': 'Success', 'currency': [ {'id': 1, 'code': 'AFN', 'currency': 'Afghan afghani', 'rate': 0.25}, {'id': 2, 'code': 'EUR', 'currency': 'European euro', 'rate': 0.25}, {'id': 3, 'code': 'CFA', 'currency': 'Franc CFA', 'rate': 0.25} ] }; // 提取code字段生成列表 List<String> currencyList = (currencyMap['currency'] as List<Map<String, dynamic>>) .map((item) => item['code'] as String) .toList(); // 输出结果:[AFN, EUR, CFA] print(currencyList);
分步说明
- 类型转换:先将
currencyMap['currency']转换为List<Map<String, dynamic>>类型,确保可以遍历数组内的每个货币对象。 - 提取字段:使用
map方法遍历数组,取出每个对象中的code值。 - 转成List:通过
toList()将map返回的迭代器转换为标准List类型。
容错处理(可选)
如果currencyMap或currency字段可能为空,建议添加空值判断避免运行时错误:
List<String> currencyList = []; if (currencyMap.containsKey('currency') && currencyMap['currency'] is List) { currencyList = (currencyMap['currency'] as List<Map<String, dynamic>>) .map((item) => item['code'] as String) .toList(); }
内容的提问来源于stack exchange,提问作者Mbebwo
相关产品推荐
相关产品推荐

