如何将具有键值的 JSONArray 转换为 Java 中的映射

How to convert JSONArray which has Key Value to a Map in Java

我已经能够获得一个 Jsonarray 作为使用 RestAssured 的响应。但是不知道如何将它放入一个 Hashmap 中,其中一个 String 显示指标名称,一个 Integer 显示相应的值。

RestAssured 的回复:

{
    "results": [
        {
            "maximum": 3.858
        },
        {
            "minimum": 5.20
        },
        {
            "number": 249
        }
    ]
}

我想要的是一个包含最大值,最小值和数字及其对应值的地图。 例如:{"max": 3.858, "min": 5.20, "number": 249 }

到目前为止我已经尝试了下面的代码,但它似乎不起作用。任何帮助将不胜感激。

 public static HashMap<String, String> getMinMaxCount(String URL, String query) {

        JsonObject res = getNewRelicAPIResponse(URL, query);
        HashMap<String, String> map = null;
        //System.out.println("Response is : " + res);
        JsonArray metricsArray = res.get("results").getAsJsonArray();
        int arraySize = metricsArray.size();
        String[] strArr = new String[arraySize];
        for (int i = 0; i < arraySize; i++) {
            strArr[i] = String.valueOf(metricsArray.get(i));
            //Create a Hashmap & append the Max, Min & Count
            map  = new HashMap<>();
//            String[] tokens = strArr[i].split(":");
//            String[] tokens2 = tokens[1].split("}");
            map.put("max",strArr[i]);
        }

        return map;
    }

我就是这么做的:

String res = ... //get response from API
JsonPath jsonPath = new JsonPath(res);
List<Map<String, Object>> list = jsonPath.getObject("results", new TypeRef<>(){});

System.out.println(list);
//[{maximum=3.858}, {minimum=5.2}, {number=249}]

Map<String, String> resultMap = new HashMap<>();

for (Map<String, Object> mapInList : list) {
    for (Map.Entry<String, Object> entryOfMapInList : mapInList.entrySet()) {
        resultMap.put(entryOfMapInList.getKey(), entryOfMapInList.getValue().toString());
    }
}
System.out.println(resultMap);
//{number=249, maximum=3.858, minimum=5.2}