Dart json.decode无法解码为Map <String,String>

时间:2019-07-06 18:35:08

标签: json dart

我的代码:

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>的基础知识来更好地理解什么是我做错了

1 个答案:

答案 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);
}

请注意,如果类型不兼容,则会抛出该错误。您应该始终考虑处理该问题。