我的代码:
import 'dart:convert';
String jsonString = '''{
"a": "g",
"b": "h",
"c": "j",
"d": "k"
}''';
Map<String, String> map = json.decode(jsonString);
得到错误:
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)
Map<String, dynamic> map ...
和Map<String, Object> map ...
在工作。
我试图在最后的Map<String, Map>
中针对不同的JSON进行反序列化,并且它给了我相同的错误,因此我决定首先使用Map<String, String>
的基础知识来更好地理解什么是我做错了
答案 0 :(得分:3)
要确保将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);
}
请注意,如果类型不兼容,则会抛出该错误。您应该始终考虑处理该问题。