我向服務器發送請求,當狀態代碼為 200 時一切正常,我可以解碼回傳的 json,但是當狀態不是 200 時,我有問題
這是狀態碼 200 的 json:
{
"success": true,
"statusCode": 200,
"code": "jwt_auth_valid_credential",
"message": "Credential is valid",
"data": {
"token": "a token",
"id": 42626,
"email": "[email protected]",
"nicename": "",
"firstName": "",
"lastName": "",
"displayName": ""
}
}
我已經將型別調整data為嵌套結構,很好,
else狀態碼的json是這樣的:
{
"success": false,
"statusCode": 403,
"code": "invalid_username",
"message": "Error: The username ** is not registered on this site. If you are unsure of your username, try your email address instead.",
"data": []
}
這是我的問題,回傳data值是一個空陣列,我不知道如何處理它。
這是我的模型課:
class loginpagemodel{
late final message;
late final Data data;
loginpagemodel({
this.message,required this.data });
factory loginpagemodel.fromJson(Map<String , dynamic> parsedJson){
return loginpagemodel(
message: parsedJson['message'],
data: Data.fromJson(parsedJson['data']
),
);
}
}
class Data{
late final id;
late final displayName;
Data({this.id,this.displayName});
factory Data.fromJson(Map<String,dynamic> parsedJson){
return Data(
id: parsedJson['id'],
displayName: parsedJson['displayName'],
);
}
}
提前感謝您的回答。
uj5u.com熱心網友回復:
問題是當狀態碼不是 200 時,該data欄位是List. 一個可能的解決方案:
factory loginpagemodel.fromJson(Map<String , dynamic> parsedJson){
return loginpagemodel(
message: parsedJson['message'],
data: Data.fromJson(
parsedJson['data'] == []? // if data is [] (the status code isnt 200)
{} : // empty map
parsedJson['data'] // the data field
),
);
}
uj5u.com熱心網友回復:
基本可以控制你的資料,不為空就可以使用。只是一個例子;
if(myJson["data"].length == 0 ) {
print("there is no data");
}else{
print("there is data: ${myJson["data"].toString()}");
}
uj5u.com熱心網友回復:
您可以使資料欄位為空:資料?資料。
稍后您只需使用“isEmpty”或“isNotEmpty”檢查它。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/431588.html
