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

如何使用Java遍历嵌套JSON数据并提取指定字段值

解决嵌套JSON遍历与字段提取问题

你原代码的问题是跳过了最外层的svc数组——你的目标字段都嵌套在svc数组的元素里,直接从根对象取mkDetails肯定拿不到正确的数据。下面是修正后的完整代码,包含提取Alpha、Beta和Gaama(注意JSON里字段名是Gaama而非你注释里写的Gamma)的逻辑:

import org.json.JSONArray;
import org.json.JSONObject;
import org.json.JSONParser;
import java.io.FileReader;
import java.io.File;

public class JsonParserExample {
    public static void main(String[] args) {
        try {
            // 解析JSON文件
            Object jsonObj = new JSONParser().parse(new FileReader(new File("C:\\Users\\abc\\Documents\\file.json")));
            JSONObject root = (JSONObject) jsonObj;

            // 获取svc数组(这是你原代码漏掉的关键步骤)
            JSONArray svcArray = root.getJSONArray("svc");
            // 示例JSON里svc数组只有一个元素,直接取第一个
            JSONObject svcItem = svcArray.getJSONObject(0);

            // 提取mkDetails里的Alpha和Beta
            JSONArray mkDetailsArray = svcItem.getJSONArray("mkDetails");
            JSONObject mkDetailsItem = mkDetailsArray.getJSONObject(0);
            String alpha = mkDetailsItem.getString("Alpha");
            String beta = mkDetailsItem.getString("Beta");

            // 提取mNetDetails里的Gaama
            JSONArray mNetDetailsArray = svcItem.getJSONArray("mNetDetails");
            JSONObject mNetDetailsItem = mNetDetailsArray.getJSONObject(0);
            String gaama = mNetDetailsItem.getString("Gaama");

            // 打印结果
            System.out.println("Alpha: " + alpha);
            System.out.println("Beta: " + beta);
            System.out.println("Gaama: " + gaama);

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

关键点说明:

  • 必走的svc数组环节:所有业务数据都包裹在svc数组中,这是你之前代码缺失的核心步骤,必须先拿到这个数组才能继续向下遍历。
  • 数组元素处理:示例里svc、mkDetails、mNetDetails都是数组,假设每个数组只有一个元素所以直接取索引0;如果数组可能有多个条目,你可以用循环遍历:
    for (int i = 0; i < svcArray.length(); i++) {
        JSONObject svcItem = svcArray.getJSONObject(i);
        // 重复后续的字段提取逻辑即可
    }
    
  • 字段名严格匹配:JSON里的字段是Gaama,必须和代码里的调用严格一致,否则会抛出JSONException。

这样就能正确获取到你需要的所有字段值啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 03:45:39