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

JSON解析问题:如何获取嵌套的results数组?

解决嵌套JSON数组获取问题

没问题,我来帮你搞定这个无法获取嵌套results数组的问题!

首先咱们先理清你的JSON结构:

{"results":[{"displayName":"Jack","count":"5","results":["jack","sam","kelly"],"spam":"14"}]}

这里外层的results是一个JSON数组,数组里的每个元素是一个JSONObject,而这个内层对象里又包含了一个名为results的嵌套数组(也就是你要获取的["jack","sam","kelly"])。你的原代码只处理了外层数组里的displayName和count字段,没对嵌套数组做操作,所以才拿不到它。

修改后的代码示例

下面是调整后的完整代码,我会加上嵌套数组的获取和处理逻辑:

import org.json.JSONArray;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.List;

// 假设response是你的JSON字符串
JSONObject jsonObject = new JSONObject(response);
// 先拿到外层的results数组,给它起个明确的名字避免混淆
JSONArray outerResultsArray = jsonObject.getJSONArray("results");

for (int i = 0; i < outerResultsArray.length(); i++) {
    JSONObject innerObj = outerResultsArray.getJSONObject(i);
    
    // 获取你原本需要的字段
    String displayName = innerObj.getString("displayName");
    String count = innerObj.getString("count");
    String spam = innerObj.getString("spam"); // 顺便把spam字段也取出来
    
    // 关键:获取嵌套的results数组
    JSONArray nestedResultsArray = innerObj.getJSONArray("results");
    
    // 遍历嵌套数组,把里面的元素存起来或者直接使用
    List<String> nestedNames = new ArrayList<>();
    for (int j = 0; j < nestedResultsArray.length(); j++) {
        String name = nestedResultsArray.getString(j);
        nestedNames.add(name);
        // 也可以直接打印单个元素:System.out.println("嵌套元素:" + name);
    }
    
    // 测试输出所有内容
    System.out.println("DisplayName: " + displayName);
    System.out.println("Count: " + count);
    System.out.println("Spam: " + spam);
    System.out.println("嵌套的results数组内容:" + nestedNames);
}

几个关键说明

  • 命名区分:我把外层数组命名为outerResultsArray,内层对象叫innerObj,这样能避免和嵌套的results字段混淆,代码可读性更强
  • 嵌套数组获取:直接通过内层JSONObject的getJSONArray("results")方法就能拿到嵌套数组,和你获取外层数组的逻辑类似
  • 安全处理(可选):如果担心嵌套的results字段可能不存在,可以用optJSONArray("results")替代getJSONArray,它会在字段不存在时返回null而不是抛出异常,你可以加个判断:
    JSONArray nestedResultsArray = innerObj.optJSONArray("results");
    if (nestedResultsArray != null) {
        // 这里再做遍历处理
    }
    

这样你就能成功获取到那个嵌套的["jack","sam","kelly"]数组啦!

内容的提问来源于stack exchange,提问作者user1318741

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:28:06