gpt4 book ai didi

dart - 使用 json serialisable 解析 json 数据时出现 flutter 类型错误

转载 作者:IT王子 更新时间:2023-10-29 07:21:04 29 4
gpt4 key购买 nike

我正在尝试解析来自 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')

如果将鼠标悬停在 body ​​上,您会看到黑色的数据弹出。 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);
}

请帮我解释一下它在 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 数据中获取 MainRank,因此:

改变这个:

 var data;

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

对此:

MainRank data;

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

关于dart - 使用 json serialisable 解析 json 数据时出现 flutter 类型错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55620174/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com