首页 > 解决方案 > 获取嵌套映射中的每个键条目

问题描述

我有一个嵌套地图,如下所示:

{ "name":"Italien", "documentId":a4c3jzNeYIaz3MrPWh1c,
"children":[ { "name":"Lombardei", ], "documentId":XM0SBotZiL7YwCWVptaF, "children":[ { "name":"Brescia" , "documentId":Cb6NMCTCs5kbdjbmlpyO, "children":[ { "name":"Nave", "documentId":2cZuhJjRHejA1ztPr2iS, "children":[ ] }, ] }, ] }, ] }

这可能会永远持续下去。所以我需要获取 documentId 的每一个值,即使是在深层嵌套的孩子中。我不能明确地调用这些键,因为地图总是动态的并且会随着时间而变化。

标签: jsonflutterdictionarydart

解决方案


您可以像这样使用递归:

handleMap(Map map, [String key]) {
  map.foreach((key, value) {
  
    if (value is Map) handleMap(value, key);
    else if (value is List) handleList(value, key);
    else handleValue(value, key);
  });
}

handleList(List list, [String key]) {
  list.foreach((entry) {
    
    if (entry is Map) handleMap(entry);
    else if (entry is List) handleList(entry);
    else handleValue(entry);
  });
}

handleValue(dynamic value, [String key]) {
  ...
}

调用它:

handleMap(data);

推荐阅读