我是Dart的新手,我想知道.cast()
方法如何与动态类型和列表一起使用。
这是Flutter文档中的一个有效示例,说明如何在Dart中手动解析JSON:
List<Photo> parsePhotos(String responseBody) {
final parsed = json.decode(responseBody).cast<Map<String, dynamic>>();
return parsed.map<Photo>((json) => Photo.fromJson(json)).toList();
}
其中responseBody
是先前从HTTP端点获取的一些JSON数组。
我不明白为什么json.decode(responseBody)
的结果在逻辑上应为Map<String, dynamic>
时强制转换为List<Map<String, dynamic>>
。我已经调试了代码,实际上变量parsed
是列表的子类型。
我在这里出了什么问题?
先谢谢了。
答案 0 :(得分:1)
看起来像是正确的。 cast
是Iterable
的一种方法。尖括号中的类型是Iterable中每个元素的类型。
https://api.dart.dev/stable/2.7.1/dart-core/Iterable/cast.html