Android Volley解析JSON报错:No value for BalExDto 求助
问题分析与解决方案
哦,我一眼就看出问题所在了!你抛出的JSONException是因为你没有正确遍历返回JSON的嵌套层级,直接从根对象里找BalExDto肯定找不到呀。
先帮你理清楚返回JSON的完整层级结构:
{ "QueryAcctBalResponse": { "BalExDtoList": { "BalExDto": [ { "BalID": "xxxx", ..., "AcctResName": "xxxx", ... }, { "BalID": "yyyy", ..., "AcctResName": "yyyy", ... } ] } } }
你需要逐层解析,不能跳过中间的嵌套对象:
- 先从根
response里获取QueryAcctBalResponse对象 - 再从这个对象里获取
BalExDtoList对象 - 最后从
BalExDtoList里拿到BalExDto数组
修正后的代码
JsonObjectRequest sq = new JsonObjectRequest(Request.Method.POST, balanceUrl, request, new Response.Listener<JSONObject>() { @Override public void onResponse(JSONObject response) { try { // 第一步:获取外层的QueryAcctBalResponse对象 JSONObject queryResponse = response.getJSONObject("QueryAcctBalResponse"); // 第二步:获取BalExDtoList对象 JSONObject balListObj = queryResponse.getJSONObject("BalExDtoList"); // 第三步:拿到BalExDto数组 JSONArray jsonArray = balListObj.getJSONArray("BalExDto"); for (int i = 0; i < jsonArray.length(); i++){ JSONObject jsonObject = jsonArray.getJSONObject(i); // 现在可以正常获取AcctResName了 Toast.makeText(CheckBalance.this, jsonObject.getString("AcctResName"), Toast.LENGTH_LONG).show(); } pd.hide(); } catch (JSONException e) { e.printStackTrace(); // 可以在这里加个Toast提示解析失败,更友好 Toast.makeText(CheckBalance.this, "账户余额解析失败", Toast.LENGTH_SHORT).show(); } Log.d("Response", "Response_TAG: "+response); } }, // 别忘了加上错误监听器哦,处理请求失败的情况 new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { pd.hide(); Toast.makeText(CheckBalance.this, "请求失败", Toast.LENGTH_SHORT).show(); error.printStackTrace(); } });
额外小建议
为了让代码更健壮,你可以使用optJSONObject和optJSONArray代替getJSONObject/getJSONArray,这样如果某个字段不存在时不会直接抛出异常,而是返回null,你可以提前做判断:
JSONObject queryResponse = response.optJSONObject("QueryAcctBalResponse"); if(queryResponse != null){ JSONObject balListObj = queryResponse.optJSONObject("BalExDtoList"); if(balListObj != null){ JSONArray jsonArray = balListObj.optJSONArray("BalExDto"); if(jsonArray != null && jsonArray.length() > 0){ // 继续解析逻辑 } } }
内容的提问来源于stack exchange,提问作者user3577379
相关产品推荐
相关产品推荐

