【问题标题】:flutter type error while parsing json data using json serialisable使用json可序列化解析json数据时出现颤振类型错误
【发布时间】: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) =&gt; MainRank.fromJson(el));这一行

标签: dart flutter


【解决方案1】:

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

改变这个:

 var data;

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

到这里:

MainRank data;

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

【讨论】:

  • 谢谢。有效。我习惯于解析列表,所以我不得不使用 map。 :) 现在一切正常!
猜你喜欢
  • 2019-09-24
  • 2020-07-13
  • 2018-09-04
  • 2019-12-04
  • 1970-01-01
  • 2015-05-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多