首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何处理差异响应API?

如何处理差异响应API?
EN

Stack Overflow用户
提问于 2020-04-14 12:52:14
回答 2查看 35关注 0票数 0

如何处理成功和失败的火灾响应结果之间的差异?

响应成功:

代码语言:javascript
运行
复制
{
   "header":{
      "status":true,
      "respcode":"00",
      "message":"Successfully."
   },
   "data":{
      "userid":"3485345",
      "password":"3423424",
      "bit18":"0000",

   }
}

响应失败:

代码语言:javascript
运行
复制
{
   "header":{
      "status":false,
      "respcode":"01",
      "message":"Userid Tidak Terdaftar"
   },
   "data":""
}
EN

回答 2

Stack Overflow用户

发布于 2020-04-14 13:21:44

我不知道为什么在失败的情况下,数据是字符串(而不是对象)。从理论上讲,失败的案例应该有一个空对象,而不是字符串。无论如何,假设您无法控制服务器的响应,您可能希望执行以下操作:

(我写的前两行只是为了确保解析能正常工作。)

代码语言:javascript
运行
复制
Map<String, dynamic> mData = {
                              "header":{
                                  "status":true,
                                  "respcode":"00",
                                  "message":"Successfully."
                              },
                              "data":{
                                  "userid":"3485345",
                                  "password":"3423424",
                                  "bit18":"0000",

                              }
                            };

    String jData = json.encode(mData);

    Map<String, dynamic> decodedBody = json.decode(jData);

    print(decodedBody["header"]["respcode"]);  // prints 00

    if (decodedBody['header']['status'])
    {
      User user = User.fromJson(decodedBody['data']);
      print(user.userId);  // This prints 3485345
    }
    else {
       // login failed
    }

用户模型定义如下:

代码语言:javascript
运行
复制
class User {
  final String userId;
  final String password;
  final String bit18;

  User({@required this.userId, @required this.password, this.bit18});

  User.fromJson(Map json)
      : this.userId = json['userid'],
        this.password = json['password'],
        this.bit18 = json['bit18'];
}
票数 0
EN

Stack Overflow用户

发布于 2020-04-14 13:40:41

假设你的响应中总是有报头,你可以这样做:

代码语言:javascript
运行
复制
Map<String, dynamic> res1 = {
    "header": {"status": true, "respcode": "00", "message": "Successfully."},
    "data": {
      "userid": "3485345",
      "password": "3423424",
      "bit18": "0000",
    }
  };

  Map<String, dynamic> res2 = {
    "header": {
      "status": false,
      "respcode": "01",
      "message": "Userid Tidak Terdaftar"
    },
    "data": ""
  };

  // bla = res2 for failed case
  final bla = res1;
  if (bla['header']['status']) {
    print(res1['data']['userid']);
    // do your success code here
  } else {
   // do your fail code here
    print('fail');
  }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61200900

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档