如何编写解析此 JSON 的 Dart 模型类?
Posted
技术标签:
【中文标题】如何编写解析此 JSON 的 Dart 模型类?【英文标题】:How do I write a Dart model class which parses this JSON? 【发布时间】:2020-12-31 17:20:21 【问题描述】:我正在开发一个 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
这是它在数据库中的结构:
【问题讨论】:
那甚至不是有效的 json,不是吗? @OldProgrammer 他们显示的“JSON”输出很可能是在他们解码然后打印解码器返回的地图之后。 在这里查看我的答案:- ***.com/a/62888773/8388068 【参考方案1】:您可以在此https://app.quicktype.io/ 网络中为任何语言转换任何 json 数据,请尝试 :)
【讨论】:
我对课程做了一个小修改,但这很有效。谢谢!【参考方案2】:我认为 List 'from' 方法需要一个 Iterable 值,但 'favorites' 值是 'Map'。
List<String> favsList = new List<String>.from(favsFromJson);
如果你只使用没有键的 Map 值,你可以喜欢下面。
List<String> favsList = [];
favsFromJson.values((value) => favList += value);
【讨论】:
以上是关于如何编写解析此 JSON 的 Dart 模型类?的主要内容,如果未能解决你的问题,请参考以下文章
使用 Dart 语言解析嵌套 JSON 数组并将其放入模型类中
如何从 json 中获取 int 并将其解析为 dart 中的 bool?