使用JSON可序列化解析JSON数据时出现颤振类型错误

时间:2019-04-10 19:41:19

标签: dart flutter

我正在尝试从json解析数据。我认为这张图片将帮助您理解问题。

enter image description here

我越来越 Exception has occurred. _TypeError (type '(dynamic) => MainRank' is not a subtype of type '(String, dynamic) => MapEntry<dynamic, dynamic>' of 'transform')

如果将鼠标悬停在身体​​上,您会看到黑色弹出数据。 ranks是一个列表,那里还有两个额外的属性。

我的MainRank班就是这样

class MainRank{
  String divisionName;
  String tournamentName;

  final  List<Ranks> ranks; 

  MainRank(this.divisionName, this.tournamentName, this.ranks);
  factory MainRank.fromJson(Map<String, dynamic> json) =>
     _$MainRankFromJson(json);
  Map<String, dynamic> toJson() => _$MainRankToJson(this);
}

请帮助我解释一下它在飞镖中的工作原理。我来自php / js背景,因此数据类型似乎让我很难受:)谢谢

编辑 我的api的响应是

{
  ranks: [....],
  divisionName: "Division 2",
  tournamentName: "Season 4"
}

我用来解析json的代码是

Future _getData() async{
var res = await CallApi().getData('standings/${widget.id}');
final body = json.decode(res.body);
// final matches = body['matches'];
var data;

if(body!=null){
   data = body.map((el) => MainRank.fromJson(el));
}
print(data);
 return null;
}

1 个答案:

答案 0 :(得分:1)

您想从json数据中获取MainRank,所以:

更改此内容:

 var data;

 if(body!=null){
    data = body.map((el) => MainRank.fromJson(el));
 }

对此:

MainRank data;

if(body!=null){
    data = MainRank.fromJson(body);
 }