【发布时间】:2016-03-23 18:43:21
【问题描述】:
我在 Web 应用程序中经常做的事情是从服务器请求资源并将其作为 dart 中的 Map 处理。
import 'dart:convert';
const String sampleJSON = '''
{
"member": {
"meaningOfLife": 42
}
}
''';
Map<String, dynamic> getResource() {
// do some magic
return JSON.decode(sampleJSON);
}
我假设 JSON 解码 Map 中的所有键都是字符串,但显然我不知道值的类型。在检查模式下,这工作得相当好。
在强模式下对上面的代码分析会告诉我:Unsound implicit cast from dynamic to Map<String, dynamic>
问题:
什么是处理此类强制转换警告的好策略?
有问题的选项 1:
Map getResource() {
// do some magic
return JSON.decode(sampleJSON);
}
稍后这可能是个问题:Iterable<String> keys = getResource().keys 会发出警告。
有问题的选项 2:
Map<String, dynamic> getResource() {
// do some magic
return new Map<String, dynamic>.from(JSON.decode(sampleJSON));
}
它不会大大降低性能吗?我仍然会收到Map<String, dynamic> meaning = getResource()["member"];的警告
感谢您的建议。
【问题讨论】:
标签: dart