【发布时间】:2020-08-24 04:27:00
【问题描述】:
我正在尝试学习颤振,但我被 JSON 序列化困住了。我正在关注 YouTube 和颤振文档中的一些教程,但我在序列化方面遇到了一些困难。你能帮我一点吗,这是出于教育目的,所以我对背后的理论而不是解决方案本身更感兴趣,但是即使只有解决方案,我认为我也可以尝试理解这个过程。我应该提到我知道this,但就我而言,我在数据中嵌套了对象,这让我感到困惑。
响应数据的样本,它基本上是一家商店,每天都有一个营业日列表,每个对象(天)都有营业时间和日期。
{
"data": [
{
"openTime": {
"open": "10:00",
"close": "20:00"
},
"date": {
"gregorian": {
"day": "01",
"weekday": {
"en": "Friday",
"de": "Freitag"
},
"month": {
"number": 5,
"en": "May",
"de": "Mai"
},
"year": "2020"
}
}
},
{
"openTime": {
"open": "12:00",
"close": "18:00"
},
"date": {
"gregorian": {
"day": "02",
"weekday": {
"en": "Saturday",
"de": "Samstag"
},
"month": {
"number": 5,
"en": "May",
"de": "Mai"
},
"year": "2020"
}
}
}
]
}
我获取数据的函数:
Future<Mall> fetchData() async {
final response = await http.get(url);
if (response.statusCode == 200) {
return Mall.fromJson(json.decode(response.body));
} else {
throw Exception('Failed to load data!');
}
}
就我而言,Mall 类有openTime 和date,我认为这是我的问题所在。
class Mall {
final dynamic openTime;
final dynamic date;
Mall({this.openTime, this.date});
factory Mall.fromJson(Map<String, dynamic> json) {
return Mall(openTime: json['openTime'], date: json['date']);
}
}
我试图产生的结果应该是这样的,这样我就可以遍历数据列表并构建一张卡片数天(例如过去 7 天)
var time = [
{
"openTime": {"open": "10:00", "close": "20:00"},
"date": "01 May 2020"
},
{
"openTime": {"open": "12:00", "close": "18:00"},
"date": "02 May 2020"
},
];
我得到的错误是:
type 'List<dynamic>' is not a subtype of type 'Map<String, dynamic>'
如果您需要更多详细信息,请告诉我。提前致谢。
【问题讨论】: