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

如何在Java中从JSON响应的JSONArray提取指定属性值?

解决方案

你可以通过判断每个dimensions元素中的键名,分别提取time和Azure-Services数组,再遍历数组获取目标属性值。以下是完整的代码实现:

JSONObject jsonObj = new JSONObject(reportData);
JSONArray dimensionsArr = jsonObj.getJSONArray("dimensions");

for (int i = 0; i < dimensionsArr.length(); i++) {
    JSONObject dimensionObj = dimensionsArr.getJSONObject(i);
    
    // 处理time数组,提取name属性
    if (dimensionObj.has("time")) {
        JSONArray timeArr = dimensionObj.getJSONArray("time");
        System.out.println("=== Time数组的name值 ===");
        for (int j = 0; j < timeArr.length(); j++) {
            JSONObject timeItem = timeArr.getJSONObject(j);
            String name = timeItem.getString("name");
            System.out.println(name);
        }
    }
    
    // 处理Azure-Services数组,提取label属性
    if (dimensionObj.has("Azure-Services")) {
        JSONArray azureServicesArr = dimensionObj.getJSONArray("Azure-Services");
        System.out.println("=== Azure-Services数组的label值 ===");
        for (int k = 0; k < azureServicesArr.length(); k++) {
            JSONObject serviceItem = azureServicesArr.getJSONObject(k);
            String label = serviceItem.getString("label");
            System.out.println(label);
        }
    }
}

关键步骤说明:

  • 区分数组类型:用has()方法检查当前dimension对象的键,判断是time还是Azure-Services数组。
  • 遍历子数组:针对每个目标数组,嵌套循环遍历内部的每个对象。
  • 提取目标属性:调用getString()直接获取属性值;若属性可能为null,可改用optString()避免抛出异常。

输出示例:

=== Time数组的name值 ===
total
2022-01
2022-02
2022-03
=== Azure-Services数组的label值 ===
Total
Marketplace
Marketplace
Storage
Other

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 15:05:20