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
相关产品推荐
相关产品推荐

