【发布时间】:2020-04-25 07:35:12
【问题描述】:
我有一个从 Map<String,dynamic> 类型的 json.decode 返回的地图
动态部分包含另一个地图,我想将其放在单独的变量中。我设法通过以下方式做到这一点:
Map<DateTime, List<DayOffDto>> mapToReturn = Map();
Map<String, dynamic> responseBody = json.decode(
response.body,
reviver: _reviver,
);
if (responseBody == null) {
throw NoDataServerException();
}
responseBody.entries.forEach((element) {
Map map = element.value;
//map.values;
map.entries.forEach((element2) {
mapToReturn[element2.key] = element2.value;
});
});
//mapToReturn contains now the extracted map from responseBody
reviver 功能只是为我做了一些转换
_reviver(dynamic key, dynamic value) {
if (key != null && value is Map && (key as String).contains("-")) {
var object = value;
final DayOffDto dayOffDto = DayOffDto.fromFirebase(
key_firebase: key as String,
parsedJson: value,
rota: rotaParam,
chosenYear: yearParam);
DateTime datetime = Helper.getDateTimeFromDayNumber(
dayOffDto.dayNumber,
dayOffDto.year,
);
Map<DateTime, List<DayOffDto>> internalMap = LinkedHashMap();
internalMap[datetime] = [dayOffDto];
return internalMap;
}
return value;}
我认为这不是提取 .对优化代码有任何想法吗?
responseBody.values 返回Iterable<V>
所以当我这样做的时候
mapToReturn = responseBody.values我收到一个错误
【问题讨论】:
-
也许 responseBody.values 符合您的要求?
-
本教程可能会给你一些提示:levelup.gitconnected.com/…
-
responseBody.values 返回 Iterable