尝试解析 JSON 时,InternalLinkedHashMap<String, dynamic>' 不是 'FutureOr<List<dynamic> 类型的子类型

Posted

技术标签:

【中文标题】尝试解析 JSON 时,InternalLinkedHashMap<String, dynamic>\' 不是 \'FutureOr<List<dynamic> 类型的子类型【英文标题】:InternalLinkedHashMap<String, dynamic>' is not a subtype of type 'FutureOr<List<dynamic> when try to parse JSON尝试解析 JSON 时,InternalLinkedHashMap<String, dynamic>' 不是 'FutureOr<List<dynamic> 类型的子类型 【发布时间】:2019-06-20 18:43:07 【问题描述】:

我通过分步指南学习 Flutter。因此,当我使用指南中的代码时 - 它运行良好,但是当我尝试更改 JSON URL 时,我得到了错误。据我了解,JSON 格式和 jsonDecode 的问题只是无法解码 RIOT JSON,但如何解决呢?

List _games = await getGames();

Future<List> getGames() async 


    //Not working with this JSON URL
    String apiUrl = 'https://euw1.api.riotgames.com/lol/match/v4/matchlists/by-account/UZs5l9TT7GLEPfoOZ1eTMqqyJEomgmUHueGQ2aFNHaYTOZI/?api_key=RGAPI-07972f29-94f8-4d54-a2dd-527d4eeb0335';

    //Working good with this JSON URL
    String apiUrl = 'https://jsonplaceholder.typicode.com/posts';

  http.Response response = await http.get(apiUrl, headers: "Accept": "application/json");
  print(jsonDecode(response.body));
  return jsonDecode(response.body);

【问题讨论】:

嗨!欢迎来到堆栈溢出。你到底得到了什么错误? 【参考方案1】:

改变

Future<List>

Future<Map<String,dynamic>>

如果你有像 [1, 2, 3]["foo", "bar", "baz"] 这样的 JSON,你会得到一个 List,但如果你有像 "foo": 1, "bar": 2, "baz": 3 这样的 JSON,你会得到一个 Map&lt;String,dynamic&gt;。对于"foo",您将获得String,对于true,您将获得bool,依此类推。我想你明白了。

【讨论】:

以上是关于尝试解析 JSON 时,InternalLinkedHashMap<String, dynamic>' 不是 'FutureOr<List<dynamic> 类型的子类型的主要内容,如果未能解决你的问题,请参考以下文章

尝试解析 JSON 响应时获取 <null>

加载作业尝试使用 java 将 json 插入 BigQuery 表时解析错误

Angular Nx Nrwl - 尝试创建新库时无法解析 tsconfig.base.json:JSON 中的 PropertyNameExpected

尝试使用转义单引号解析 JSON 时,Javascript 中出现“意外标识符”错误

我在尝试恢复节点模块时收到错误“错误意外结束 JSON 输入时解析'...“依赖项”:“tsli'”[重复]

尝试解析带引号的 JSON 响应时出错