当前位置: 首页 > 知识库问答 >
问题:

JSON 状态 = 0 未显示

沈建柏
2023-03-14

我试图在用户登录后显示我的json响应。当用户输入正确的信息时,它成功地在我的应用程序中显示响应。但是当用户在这里输入错误的凭证时,应用程序会崩溃,这是当用户输入错误信息时我的json响应。它应该显示状态=0在我的应用程序显示(或任何我想显示的响应

I/flutter (16426): {"Status":"0","Message":"Wrong Password provided","UserData":null}

这是当用户按下登录按钮时我的API调用

 Future<void> login() async{
    var jsonResponse = null;
if (passwordontroller.text.isNotEmpty && emailController.text.isNotEmpty) {
  var response = await http.post(Uri.parse("http://jhhjhjhjhjhjhj"),
      body: ({
        'LoginId': emailController.text,
        'Password': passwordontroller.text
      }));
  if (response.statusCode == 200) {
    print("Correct");
    print(response.body);
    jsonResponse = json.decode(response.body.toString());
    print(jsonResponse);
    Navigator.push(context, MaterialPageRoute(builder: (context)=>AfterLoginResPage(response: ApiResponse.fromJson(jsonResponse))));
  }

   else {
    print("Wronggooooooooooooooooooooooooooo");
    print(response.body);
    ScaffoldMessenger.of(context)
        .showSnackBar(SnackBar(content: Text("Invalid credentials")));
  }
} else {
  ScaffoldMessenger.of(context)
      .showSnackBar(SnackBar(content: Text("Blank field is not allowed")));
}

}

我的模型类

 class ApiResponse {
    ApiResponse({
        required this.status,
        required this.message,
        required this.userData,
    });

    String status;
    String message;
    UserData userData;

    factory ApiResponse.fromJson(Map<String, dynamic> json) => ApiResponse(
        status: json["Status"],
        message: json["Message"],
        //userData: UserData.fromJson(json["UserData"]),
        userData: json["UserData"] == null? null:UserData.fromJson(json["UserData"]), //======== Updated
    );


}

class UserData {
    UserData({
        required this.name,
        required this.encUserId,
    });

    String name;
    String encUserId;

    factory UserData.fromJson(Map<String, dynamic> json) => UserData(
        name: json["Name"],
        encUserId: json["EncUserId"],
    );

}

然后在这里,我显示我的响应,当用户输入正确的凭据时,该响应成功执行。但是在输入错误的凭据时崩溃了

 children: [
           Text("Status: ${widget.response.status}"),
           Text("Message: ${widget.response.message}"),

我面临的另一个问题是,在这里我可以显示状态和消息,如果我想显示< code>Name

这是我在邮递员中输入正确信息后的 JSON 响应

{
"Status": "1",
"Message": "You are Logged in successfully",
"UserData": {
    "Name": "tuhinroy881@gmail.com",
    "EncUserId": "bbA/HajfPdswT0fhhiMvEg=="
}

}

.

共有1个答案

惠文彬
2023-03-14

由于启用了空安全,您需要将UserData UserData更改为UserData?用户数据;和userData:json[“userData”]==null?null:用户数据。fromJson(json[“UserData”]作为Map

您的问题是您试图解析< code>UserData,而您的错误响应没有任何< code>UserData相关信息。

class ApiResponse {
    ApiResponse({
        required this.status,
        required this.message,
        required this.userData,
    });

    String status;
    String message;
    UserData? userData;

    factory ApiResponse.fromJson(Map<String, dynamic> json) => ApiResponse(
        status: json["Status"],
        message: json["Message"],
        userData: json["UserData"] == null? null:UserData.fromJson(json["UserData"]), 
    );


}
 类似资料:
  • 问题内容: 我正在为JSON运行$ http.get,并且状态为0。我已经下载了相同的JSON,并且get在本地运行,并且在Python中使用请求库可以毫无问题地获取JSON,但是在AngularJS它不起作用。我不明白的是为什么为什么angular没有得到它,而其他所有东西都得到了。下面的代码段。 这提供了JSON并在使用本地文件时对其进行了解析,但否则会失败,并将status1设置为0。 问题

  • 我在React Native中遇到了与Android 11相关的问题。在我的应用程序中,我从/storage/emulated/0/WhatsApp/Media/获取WhatsApp状态。在Android10之前,状态/文件夹所有东西都可以找到,但在Android11中,它什么也没有显示。请帮我做这件事。 这是我的反应原生代码读取WhatsApp状态文件夹

  • 问题内容: 我遇到一个问题,在此应用程序上尝试POST请求时收到以下错误代码(请记住我是初学者node.js / js程序员): 错误: app.js: 以下是我的edit.js路由,我认为是发生问题的地方: 问题答案: 我刚才有一个类似的错误消息,并设法通过更改解决了该问题: 至: 要不就: 也就是说,请确保您未尝试在某处设置无效的HTTP状态代码。 这可能是问题所在,但看起来您不小心复制了代码

  • 问题内容: 无法使用XMLHttpRequest获取数据(状态0,responseText为空): 它警告“状态0”。 与localhost请求的情况相同(cd_catalog.xml保存为本地文件) 但是使用本地主机IP请求 并与本地文件请求 一切正常(状态200) 什么会导致在线请求出现问题(状态= 0)? PS:Live HTTP标头显示在所有4种情况下一切正常: PS2:VMWare上的A

  • 我正在尝试创建一个非常简单的应用程序,当点击中心小部件时,列表中的元素会显示出来。 这是我的代码: 没有显示任何错误,但同时,我的目标没有达到,因为没有显示任何文本,即使我添加了这个代码打印(yourList[randomIndex]),也不会在终端中打印任何内容;。我如何显示文本,并使打印出现?

  • 本文向大家介绍Android仿QQ在状态栏显示登录状态效果,包括了Android仿QQ在状态栏显示登录状态效果的使用技巧和注意事项,需要的朋友参考一下 运行本实例,将显示一个用户登录界面,输入用户名(hpuacm)和密码(1111)后,单击"登录"按钮,将弹出如下图所示的选择登录状态的列表对话框, 单击代表登录状态的列表项,该对话框消失,并在屏幕的左上角显示代表登录状态的通知(如图) 过一段时间后