基于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
相关产品推荐
相关产品推荐

