【发布时间】:2019-04-10 19:41:19
【问题描述】:
我正在尝试解析来自 json 的数据。我认为这张图片将帮助您理解问题。
我得到
Exception has occurred.
_TypeError (type '(dynamic) => MainRank' is not a subtype of type '(String, dynamic) => MapEntry<dynamic, dynamic>' of 'transform')
如果您将鼠标悬停在正文上,您将看到带有数据的黑色弹出窗口。 rank 是一个列表,那里还有两个额外的属性。
我的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);
}
请帮我解释一下它在 dart 中的工作原理。我来自 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;
}
【问题讨论】:
-
您的网络服务的 json 响应是什么?
-
编辑了问题。请看:)谢谢
-
你的错误是什么?
-
这是
data = body.map((el) => MainRank.fromJson(el));这一行