求助:在Android Studio中如何解析嵌套的JSON数组与对象
解析嵌套在JSON对象中的数组问题解决
问题分析
你的代码核心错误是把最外层的JSON对象当成了JSON数组。目标JSON的最外层是一个包含users键的对象,而非直接的数组,直接用JSONArray jsonArray = new JSONArray(s)初始化会抛出JSON解析异常。
正确解析步骤
- 先将返回的字符串解析为最外层的
JSONObject - 从该对象中提取名为
users的JSONArray - 遍历数组,逐个解析里面的用户对象
修正后的代码
@Override protected void onPostExecute(String s) { super.onPostExecute(s); try { // 解析最外层JSON对象 JSONObject rootObject = new JSONObject(s); // 获取users数组 JSONArray usersArray = rootObject.getJSONArray("users"); // 遍历数组处理每个用户数据 for (int i = 0 ; i < usersArray.length(); i++) { JSONObject userObject = usersArray.getJSONObject(i); int id = userObject.getInt("id"); String username = userObject.getString("username"); String email = userObject.getString("email"); Log.e("user info", "id: " + id + ", username: " + username + ", email: " + email); // 若要在TextView显示所有用户名,需累加内容而非覆盖 // textView.setText(textView.getText() + "\n" + username); } } catch (JSONException e) { e.printStackTrace(); } }
额外提示
- 如果要在TextView中展示所有用户信息,不要直接用
setText()覆盖原有内容,建议用StringBuilder拼接后再设置,避免只显示最后一个用户的数据 - 解析字段时尽量使用对应类型的方法,比如
getInt("id")而非getString("id"),保证数据类型匹配
内容的提问来源于stack exchange,提问作者Mops Lops
相关产品推荐
相关产品推荐

