Android将PHP返回的JSON字符串转为JSONArray报错如何解决?
解答
JSON格式校验
你收到的响应JSON格式完全合法,不存在格式错误。抛出异常的核心原因是:你返回的JSON顶层结构是JSONObject(大括号{}包裹),不是你代码里尝试转换的JSONArray(中括号[]包裹)。
正确解析代码
你需要先将响应字符串转为JSONObject,再从中提取images字段对应的JSONArray,修改后的Android侧代码如下:
@Override protected void onPostExecute(String result) { super.onPostExecute(result); if (pd.isShowing()){ pd.dismiss(); } txtJson.setText(result); try { // 先解析顶层响应对象 JSONObject rootObj = new JSONObject(result); // 提取images对应的数组 JSONArray imageArr = rootObj.getJSONArray("images"); showGrid(imageArr); } catch (JSONException e) { e.printStackTrace(); txtJson.setText("JSON解析异常"); } }
可选优化
你可以在提取数组前增加字段存在性校验,避免接口结构调整导致的崩溃:
if (rootObj.has("images") && !rootObj.isNull("images")) { JSONArray imageArr = rootObj.getJSONArray("images"); showGrid(imageArr); }
内容的提问来源于stack exchange,提问作者remov
相关产品推荐
相关产品推荐

