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

Java中如何将RestAssured返回的含键值对的JSONArray转为HashMap

解决方案

核心改动说明

  • HashMap初始化逻辑移到循环外,避免每次循环覆盖之前存入的键值
  • 直接解析数组内的JsonObject获取键值,无需手动切割字符串处理
  • 增加接口返回原始键名到目标键名的映射逻辑,匹配你需要的输出格式

修正后代码

import com.google.gson.JsonObject;
import com.google.gson.JsonArray;
import java.util.HashMap;

public static HashMap<String, String> getMinMaxCount(String URL, String query) {
    JsonObject res = getNewRelicAPIResponse(URL, query);
    HashMap<String, String> map = new HashMap<>();
    JsonArray metricsArray = res.get("results").getAsJsonArray();

    for (int i = 0; i < metricsArray.size(); i++) {
        // 解析数组中的每个Json对象
        JsonObject metricItem = metricsArray.get(i).getAsJsonObject();
        // 获取当前对象唯一的键名
        String originalKey = metricItem.keySet().iterator().next();
        // 获取对应值的字符串形式
        String value = metricItem.get(originalKey).getAsString();
        
        // 按照需求映射键名
        if ("maximum".equals(originalKey)) {
            map.put("max", value);
        } else if ("minimum".equals(originalKey)) {
            map.put("min", value);
        } else if ("number".equals(originalKey)) {
            map.put("number", value);
        }
    }
    return map;
}

如果需要值保留数值类型而非字符串,可以把HashMap泛型改为HashMap<String, Number>,取值时调用getAsNumber()替代getAsString()即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 17:06:04