当前位置: 首页 > 知识库问答 >
问题:

颤振类型错误类型“列表”不是“映射类型”的子类型

查飞星
2023-03-14

我正面临着一个奇怪的颤动错误。我使用json序列化。

这是我的密码

class DivMatches{
  final List<Match> matches;
   DivMatches(this.matches);
  factory DivMatches.fromJson(Map<String, dynamic> json) =>
  _$DivMatchesFromJson(json);
  Map<String, dynamic> toJson() => _$DivMatchesToJson(this);

}

我的web api发送的数据如下

[
 [
   {..},
   {..},
   {..},
   {..}
 ],
[...],
[...],
[...],
[...],
[...],
[...]
]

这是数组的数组。

生成错误的代码是

data = body.map((el) => DivMatches.fromJson(el)).toList(); 

它给出的错误

Exception has occurred.
_TypeError (type 'List<dynamic>' is not a subtype of type 'Map<String, dynamic>')

JSON数据这里是JSON数据格式的屏幕截图

共有2个答案

钦侯林
2023-03-14

可以使用强制转换

import 'dart:convert';

void main() {
  print(getScores());
}

class Score {
  int score;
  Score({this.score});

  factory Score.fromJson(Map<String, dynamic> json) {
    return Score(score: json['score']);
  }
}

List<Score> getScores() {
  var jsonString = '''
  [
    {"score": 40},
    {"score": 80}
  ]
''';

  List<Score> scores = jsonDecode(jsonString)
      .map((item) => Score.fromJson(item))
      .toList()
      .cast<Score>(); // Solve Unhandled exception: type 'List<dynamic>' is not a subtype of type 'List<Score>'

  return scores;
}


南宫天逸
2023-03-14

更改此行:

final body = json.decode(res.body);

对此:

final body = json.decode(res.body) as List;

还有这个:

List<DivMatches> data = [];

body.forEach((el) {
   final List<Match> sublist = el.map((val) => Match.fromJson(val)).toList();
   data.add(DivMatches(sublist));
}); 

注意:检查您是否匹配。fromJson返回匹配的对象或映射。

 类似资料:
  • 当我尝试解码json时,它会给我错误。 我的模范班 功能在我使用它的地方 json数据

  • 我目前正在构建一个应用程序,通过医疗api读取数据,我试图解析JSON。 我为用户创建了一个模型类: 这是我试图阅读的JSON信息: 但是我得到的错误列表不是Map类型的子类型 如何修复此错误?

  • 我有一个问题,因为2小时。我有这个错误,我看到了更多的主题,但我不能解决它。 消息:_TypeError(类型列表不是类型映射的子类型)颤动 我的模型: 我的主题屏幕: 我尝试了更多的教程和不同的主题,但我有相同的错误。。。 非常感谢。

  • 我的JSON有点像这样: 我的模型类: 这是我的api调用: 如何获取图像。小班?如果我需要澄清我的问题,请告诉我。我得到的错误列表不是Map类型的子类型

  • 因此,我创建了一个应用程序,通过api读取数据,并尝试解析JSON api 这是我的错误截图 我试着把它改成一个列表,但它仍然读取一个错误 这是我的密码大象。飞奔 如何纠正此错误?请帮忙

  • 我试图获得用户信息后,用户输入电子邮件和密码。我使用的api会返回我用户的额外信息,所以我尝试从中获取这些信息。 我试图解析这个json: 这些是我的模型: 这是我发送电子邮件、密码和获取用户数据的部分: 这是给我错误的部分 我打印了响应体,它给出了我想要的字符串,但是jsonDecode返回了一个列表,所以我不能使用它。我怎样才能解决这个问题?提前谢谢。