【发布时间】:2021-06-01 16:10:14
【问题描述】:
我有一个 json 响应,其中有一个包含列表的列表,然后其中有一个映射,我试图解析它但它失败了,我做了什么样的错误?以前我使用这种方法来解析列表中的地图并且它有效
响应json
{
"status": "success",
"data": [
{
"id_category": 1,
"category_slug": "cc",
"category_name": "Credit Card",
"data_payment": [
{
"payment_slug": "cc",
"payment_name": "Credit Card",
"payment_logo": "https://cdn.xx.id/assets_midtrans/cc.png"
}
]
}
],
"message": "Success Get Data"
}
我的代码
class PaymentMethodListModel {
final String status, message;
final List<_Data> data;
PaymentMethodListModel({
this.status,
this.message,
this.data,
});
factory PaymentMethodListModel.fromJson(Map<String, dynamic> x) {
var list = x['data'] as List;
print(list.runtimeType);
List<_Data> sd = list.map((i) => _Data.fromJson(i)).toList();
return PaymentMethodListModel(
status: x['status'],
data: sd,
message: x['message'],
);
}
}
class _Data {
final String categorySlug, categoryName;
final List<DataPayment> dataPayment;
_Data({
this.categorySlug,
this.categoryName,
this.dataPayment,
});
factory _Data.fromJson(Map<String, dynamic> obj) {
var list = obj['data_payment'] as List;
List<DataPayment> dataPaymentList = list.map((i) => DataPayment.fromJson(i)).toList();
return _Data(
categorySlug: obj['category_slug'],
categoryName: obj['category_name'],
dataPayment: dataPaymentList,
);
}
}
class DataPayment {
final String paymentSlug, paymentName, paymentLogo;
DataPayment({
this.paymentSlug,
this.paymentName,
this.paymentLogo,
});
factory DataPayment.fromJson(Map<String, dynamic> x) => DataPayment(
paymentSlug: x['payment_slug'],
paymentName: x['payment_name'],
paymentLogo: x['payment_logo'],
);
}
错误信息
在 null 上调用了方法“map”。
接收方:空
尝试调用:map(Closure: (dynamic) => DataPayment)
【问题讨论】:
-
有时不需要使用类来表示获取的数据,如果您了解其结构,则可以使用该数据(使用
jsonDecode函数解析)。如果您需要使用类,那些不需要那么复杂,您只需要每个类一个构造函数(尽管这取决于您的需要)。回到案例,我们需要知道你在哪里解析数据的代码。