[英]How to Handle API response model class if object is not Available in some situation on Same API Flutter Dart
I need an Help for API response handling.我需要 API 响应处理的帮助。 I've created model class to convert API res.我创建了 model class 来转换 API res。 My issue is on Type the API response is changed for example我的问题是键入 API 响应已更改,例如
if type = 'Application'如果类型 = '应用程序'
{
"status": "success",
"message": "Active loan Fetched",
"data": {
"Application": {
"id": "",
"coapp_status": null,
"status": "pending-document",
"approved_amount": "3000",
"processing_fees": "450",
},
"type": "Application"
},
"timestamp": "2022-05-07 13:05:36",
"require_update": "yes"
}
and If type = 'Loan'如果类型 = '贷款'
{
"status": "success",
"message": "Loan Fetched",
"data": {
"Loan": {
"id": "",
"policy_id": "",
"application_id": "",
"user_id": "",
"approved_amount": "8000",
"disbursment_amount": "6552",
"processing_fees": "1200",
"interest_rate": "480",
"pre_emi_interest": "31.5616",
"totalAmount": 8480,
"gst_processing_fees": 216,
"totalDisbursment": 6552.4384,
"current_emi_date": "10 Jun 22",
"current_emi_amount": "5088",
"current_emi_id": "51298",
"viewid": "",
"customermessage": "Your loan have been approved for Rs.8000"
},
"type": "Loan"
}
In Data Class The Object will be changed based on type在数据 Class 中 Object 会根据类型改变
Error log:错误日志:
Unhandled Exception: type 'Null' is not a subtype of type 'Map<String, dynamic>'
Model Class: Model Class:
Application? application;
Loan? loan;
String? type;
String? sanctionLetter;
factory Data.fromJson(Map<String?, dynamic> json) => Data(
application: Application.fromJson(json["Application"]), => **Error if application not Found**
loan: Loan.fromJson(json["Loan"]), **Error if Loan not found**
type: json["type"],
sanctionLetter: json["sanction_letter"],
);
Map<String?, dynamic> toJson() => {
"Application": application!.toJson(),
"Loan": loan!.toJson(),
"type": type,
"sanction_letter": sanctionLetter,
};
}
I think problem is in null checking:我认为问题出在 null 检查中:
factory Data.fromJson(Map<String?, dynamic> json) => Data(
application: json["Application"] ? Application.fromJson(json["Application"]) : null, // **Because it can be null**
loan: json["Loan"] ? Loan.fromJson(json["Loan"]) : null, // **Because it can be null**
type: json["type"],
sanctionLetter: json["sanction_letter"],
);
UPDATE更新
application: json["Application"] != null ? Application.fromJson(json["Application"]) : null, // **Because it can be null**
loan: json["Loan"] != nul ? Loan.fromJson(json["Loan"]) : null,
Sorry for previous answer, I forgot to check for null抱歉之前的回答,我忘了检查 null
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.