【发布时间】:2020-05-28 08:26:51
【问题描述】:
我想转换 ....
From: Convert Map(String, Dynamic)
To: Entry(String title, List children)
地图对象:
Map<String, dynamic> mapData = {
"A": {
"B": {
"C":
{
"data1": "some data1",
"data2": "some data2",
"data3": "some data3",
"data4": "some data 4"
}
}
},
.......
};
]
data = generateRecursiveList(mapData);
// 我想要输出对象的数据
List<Entry> finalList = new List<Entry>();
List<Entry> generateRecursiveList(Map group){
var keylist = group.keys.toList();
var valueslist = group.values.toList();
for(int i=0; i<keylist.length;i++){
Entry entry = new Entry();
entry.title = keylist[i].toString();
List<Entry> childEntries = new List<Entry>();
for(int j=0; i<valueslist[j].length;j++){
if(valueslist[j] is Map){
childEntries.add(generateRecursiveList(valueslist[j])); // Recursive calling the same function to get the children
// I am not sure how i will get this children now
entry.children = childEntries;
}
}
// This is also I am not sure how to add the entries
finalEntries.add(entry);
}
}
输出对象:
final List<Entry> data = <Entry>[
Entry( 'A', <Entry>[
Entry( 'B',<Entry>[
Entry( 'C',<Entry>[
Entry( 'some data 1'),
Entry( 'some data 2'),
Entry( 'some data 3'),
Entry( 'some data 4')
])
])
]),
....
];
我尝试编写递归函数,但无法将这些嵌套映射转换为列表。
【问题讨论】:
-
你的输出有什么问题?