当前位置: 首页 > 面试题库 >

Android-JSONException没有值

孙星鹏
2023-03-14
问题内容

我知道在这里发布了几个具有相同主题和错误的问题,但是没有一个问题与我的问题相同,因此我决定在此处发布我的问题,希望有人能帮助我指出原因。所以我试图在我的应用程序中实现登录功能,这是代码:

if (tag.equalsIgnoreCase(login_tag)){
                // check for login response
                try {
                    if (json.getString(KEY_SUCCESS) != null) {
                        String res = json.getString(KEY_SUCCESS);
                        if(Integer.parseInt(res) == 1){
                            // user successfully logged in
                            // Store user details in SQLite Database
                            DatabaseHandler db = new DatabaseHandler(mContext);
                            JSONObject json_user = json.getJSONObject("user");

                            // Clear all previous data in database
                            logoutUser(mContext);
                            Toast.makeText(mContext, json.toString(3), Toast.LENGTH_LONG).show();
                            db.addUser(json_user.getString(KEY_EMAIL), json_user.getString(KEY_NAME), json.getString(KEY_UID), json.getString(KEY_AVA), json_user.getString(KEY_BDAY), json_user.getString(KEY_COUNTRY), json_user.getString(KEY_PREF), json_user.getString(KEY_SPEND));

                            // Launch Dashboard Screen
                            Intent dashboard = new Intent(mContext, DashboardActivity.class);

                            // Close all views before launching Dashboard
                            dashboard.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                            mContext.startActivity(dashboard);

                            // Close Login Screen
                            ((Activity) mContext).finish();
                        }
                    }
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }

这是我登录时得到的JSON响应:

{
    "tag": "login",
    "success": 1,
    "error": 0,
    "uid": "5123",
    "user": {
        "email": "abcxyz@gmail.com",
        "name": "abc",
        "avatar": "avatars/img_hzsxda_2013-03-18-11-03-33.jpg",
        "bday": "1991-02-01",
        "country": "Australia",
        "preferences": "none",
        "spending": "none"
    }
}

因此,显然有一个值avatar,但我的logcat仍然收到此警告:

03-18 12:06:36.972: W/System.err(24574): org.json.JSONException: No value for avatar

由于没有值化身,我无法完成addUser,因此登录失败。请帮助我找到错误以及如何解决。谢谢。


问题答案:

您使用错误的对象在avatar这里获取价值json.getString(KEY_AVA)。应该是json_user.getString(KEY_AVA)

另外,如果值不存在,则可以使用optString代替getString返回null值,而不是引发异常。



 类似资料:
  • 问题内容: 我有一个带有某些Spring Crud存储库的经典Spring Web应用程序。 我试图将我的实体保存在经典的角度形式内,并且随机出现此错误: 这是我发送的杰森: 这是我的课程: Exchange.java Halfflow.java 这是我的控制器签名: 我想知道什么会引发此错误,并且这种出现是随机的。 问题答案: 正如Alex所说,为防止无限递归,您添加了此批注 所以我实际上通过在

  • 我对Netflix尤里卡和春靴很陌生。我构建了一个非常简单的Eureka服务器和客户端,以便了解它们如何获得发现的所有权。尤里卡服务器正常加载,因为我在转到本地主机时可以看到UI:8761/ 我正在用Eclipse的Tomcat运行这两个实例。 我构建的Eureka客户端没有代码,因为它只运行带有适当注释的SpringBoot应用程序。Eureka服务器也是如此。 当我运行客户机时,在运行服务器之

  • 问题内容: 在进行了整个“企业”编程一段时间之后,我对语言本身感到非常失望,如果不得不回到它上面,总是会感到很受阻。您平均的Android应用程序的项目规模并不太令人生畏,并且库的编码风格实际上非常不错,但是如果我可以避免使用Java,我肯定会这样做。 这就是问题:我可以避免吗?尽管有很多JVM语言可以在台式机和服务器上选择,但是Dalvik VM和设备本身存在一些限制。使用JIT在2.2中似乎更

  • 我有一个凌空的JSONRequest,它被卡住了,因为来自服务器的响应不是有效的JSON(它是html)。 如何才能优雅地处理此错误?我有以下实现: 然而,当我发送请求并得到无效的JSON响应时,不会调用onErrorResponse。相反,我得到了一个例外 整个应用程序崩溃了。 我设法将该错误跟踪到JsonObjectRequest.java类中的以下行: 调用的行是:返回响应。错误(new P

  • 我已经从这里安装了一个Android Studio。它起作用了,我写了一个hello world项目,然后关闭了它。但IDE不会第二次启动。它会给我一个错误“缓存被锁定”。 我安装了unlocker,它说没有进程阻止这个文件夹。有人知道问题出在哪里吗?提前道谢。

  • 朋友。我从AndroidHive下载了一个示例JSON解析项目。 代码是: 在运行时,它抛出异常。所以在寻找这个问题的解决方案后,我改变了 这一行是 这一行由此处给出的说明组成。在此之后,我的logcat显示以下错误。 我找了很多朋友。但是我不能解决这个问题。所以请帮帮我。 注意:我在ISA服务器后面工作 我的网址是:http://api.androidhive.info/contacts/ 我的