You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Volley框架:如何从JSONObject读取信息并显示Toast提示?

解决Volley POST请求后根据JSONObject响应显示对应Toast的问题

嘿,我看了你的代码,发现核心问题在于你直接尝试读取message字段——当找到用户时,响应里根本没有这个字段,这会触发JSONException,导致你的成功提示逻辑根本走不到。咱们来调整一下代码,让它能正确区分两种响应情况:

关键修改点

  • 先通过response.has("message")判断响应中是否存在message字段,避免直接读取不存在的字段抛出异常
  • 分情况处理:存在message字段时判断是否是用户未找到的提示;不存在时则处理用户信息并显示成功提示

修改后的完整代码

JsonObjectRequest request = new JsonObjectRequest(Request.Method.POST, url, jsonObject,
        new Response.Listener<JSONObject>() {
            @Override
            public void onResponse(JSONObject response) {
                try {
                    // 先判断是否存在message字段(未找到用户的情况)
                    if (response.has("message")) {
                        String message = response.getString("message");
                        if ("User not Found".equals(message)) {
                            coolToast.make("User Not Found", CoolToast.INFO);
                            coolToast.setDuration(CoolToast.SHORT);
                            coolToast.show(); // 别忘了调用show()显示Toast!
                        }
                    } else {
                        // 找到用户的情况,可在这里读取用户信息
                        String userName = response.getString("name");
                        String userAddress = response.getString("address");
                        String userStatus = response.getString("status");
                        
                        // 显示成功提示
                        coolToast.make("User Found: " + userName, CoolToast.SUCCESS);
                        coolToast.setDuration(CoolToast.SHORT);
                        coolToast.show(); // 别忘了调用show()显示Toast!
                    }
                } catch (JSONException e) {
                    e.printStackTrace();
                    // 可以在这里添加解析失败的提示
                    coolToast.make("Failed to parse response", CoolToast.ERROR);
                    coolToast.setDuration(CoolToast.SHORT);
                    coolToast.show();
                }
            }
        },
        new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                // 网络请求失败的提示
                coolToast.make("Request failed", CoolToast.ERROR);
                coolToast.setDuration(CoolToast.SHORT);
                coolToast.show();
            }
        });

额外提醒

  • 注意调用coolToast.show()方法,否则Toast不会显示出来,你的原代码里漏掉了这一步哦!
  • 在catch块里添加异常提示,能帮你排查解析过程中出现的问题
  • 网络请求失败的onErrorResponse里也可以添加提示,提升用户体验

内容的提问来源于stack exchange,提问作者Satyam Gondhale

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:11:30