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

求助:在Android Studio中如何解析嵌套的JSON数组与对象

解析嵌套在JSON对象中的数组问题解决

问题分析

你的代码核心错误是把最外层的JSON对象当成了JSON数组。目标JSON的最外层是一个包含users键的对象,而非直接的数组,直接用JSONArray jsonArray = new JSONArray(s)初始化会抛出JSON解析异常。

正确解析步骤

  1. 先将返回的字符串解析为最外层的JSONObject
  2. 从该对象中提取名为users的JSONArray
  3. 遍历数组,逐个解析里面的用户对象

修正后的代码

@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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 00:52:22