我的代码:
import 'dart:convert';
String jsonString = '''{
"a": "g",
"b": "h",
"c": "j",
"d": "k"
}''';
Map<String, String> map = json.decode(jsonString);
Run Code Online (Sandbox Code Playgroud)
得到错误:
Unhandled exception:
type '_InternalLinkedHashMap<String, dynamic>' is not a subtype of type 'Map<String, String>'
#0 main (file:///...)
#1 _startIsolate.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:298:32)
#2 _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:171:12)
Run Code Online (Sandbox Code Playgroud)
Map<String, dynamic> map ...
并且Map<String, Object> map ...
正在工作。
我试图最终Map<String, Map>为不同的 JSON 进行反序列化,它给了我同样的错误,所以我决定首先使用基本的,这是Map<String, String>为了更好地理解我做错了什么
要确保将 JSON 转换为指定的值,请使用Map.castFrom方法。
所以你的代码变成
import 'dart:convert';
void main () {
String jsonString = '''
{
"a": "g",
"b": "h",
"c": "j",
"d": "k"
}''';
Map<String, String> map = Map.castFrom(json.decode(jsonString));
print(map);
}
Run Code Online (Sandbox Code Playgroud)
请注意,如果类型不兼容,它将抛出。您应该始终考虑处理它。
| 归档时间: |
|
| 查看次数: |
1759 次 |
| 最近记录: |