繁体   English   中英

如何编写解析此 JSON 的 Dart 模型类?

[英]How do I write a Dart model class which parses this JSON?

我正在开发一个 dart/flutter 应用程序,我需要从 firebase 数据库解析 JSON。 除了无法解析以下 JSON 之外,我在代码中多次成功完成此操作。 有人可以帮忙吗?

这是我正在使用的 JSON 响应:

{favorites: {-MH1vwWPqXHSXkTe_MxC: [Green Bay Packers, Washington Football Team]}, firstname: Mark, email: mbilner@gmail.com, lastname: bilner, username: mbil}

这是我的模型类:

class userProf {
  String email;
  String firstname;
  String lastname;
  String username;
  List<String> favorites;

  userProf({this.email, this.firstname, this.lastname, this.username, this.favorites});

  factory userProf.fromJson(Map<dynamic, dynamic> parsedJson) {
    var favsFromJson = parsedJson['favorites'];
    List<String> favsList = new List<String>.from(favsFromJson);


    return userProf(
        email: parsedJson['email'],
        firstname: parsedJson['firstname'],
        lastname: parsedJson['lastname'],
        username: parsedJson['username'],
        favorites: favsList
    );
  }
}

当前代码给了我以下错误:“未处理的异常:类型 '_InternalLinkedHashMap<dynamic, dynamic>' 不是类型 'Iterable' 的子类型”

这是它在数据库中的结构: 在此处输入图片说明

我认为 List 'from' 方法需要一个 Iterable 值,但 'favorites' 值是 'Map'。

List<String> favsList = new List<String>.from(favsFromJson);

如果您只使用没有键的 Map 值,您可以像下面这样。

List<String> favsList = [];
favsFromJson.values((value) => favList += value);

您可以在此https://app.quicktype.io/ web 中转换任何语言的任何 json 数据,请尝试:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM