在使用Java開發時,有時需要將JSON格式的字符串轉換為Java Map對象,以方便進行后續的操作。而Google提供了一種非常方便的方法來完成這項任務,即使用其提供的json庫來將JSON字符串轉換為Map對象。
String jsonStr = "{\"name\":\"Alice\",\"age\":20}"; Mapmap = new HashMap<>(); JsonObject jsonObject = new JsonParser().parse(jsonStr).getAsJsonObject(); for (Map.Entry entry : jsonObject.entrySet()) { String key = entry.getKey(); JsonElement value = entry.getValue(); map.put(key, value); } System.out.println(map); // {name=Alice, age=20}
以上代碼先通過JsonParser將JSON字符串轉換為JsonObject對象,然后遍歷該對象的每一個entry,在遍歷的過程中將屬性名稱和屬性值存儲在Map對象中,最終輸出轉換后的Map對象。
需要注意的是,如果JSON字符串中的屬性值是一個嵌套的JSON對象,也可以使用以上方法將其轉換為Map對象。代碼如下:
String jsonStr2 = "{\"name\":\"Alice\",\"address\":{\"city\":\"Shanghai\",\"street\":\"Nanjing Rd.\"}}"; Mapmap2 = new HashMap<>(); JsonObject jsonObject2 = new JsonParser().parse(jsonStr2).getAsJsonObject(); for (Map.Entry entry : jsonObject2.entrySet()) { String key = entry.getKey(); JsonElement value = entry.getValue(); if (value.isJsonObject()) { Map subMap = new HashMap<>(); JsonObject subJsonObject = value.getAsJsonObject(); for (Map.Entry subEntry : subJsonObject.entrySet()) { String subKey = subEntry.getKey(); JsonElement subValue = subEntry.getValue(); subMap.put(subKey, subValue); } map2.put(key, subMap); } else { map2.put(key, value); } } System.out.println(map2); // {name=Alice, address={city=Shanghai, street=Nanjing Rd.}}
以上代碼中,在遍歷到嵌套的JSON對象時,首先判斷屬性值是否為JsonObject對象,如果是則再次遍歷該對象的每一個entry,并將其存儲在一個新的Map對象中,隨后將該Map對象作為屬性值存儲在父級Map對象中。最終輸出轉換后的Map對象。
總而言之,使用Google提供的json庫將JSON字符串轉換為Map對象非常方便,并且可以支持嵌套的JSON對象。如果在Java開發中需要進行JSON字符串和Map對象之間的轉換,這種方法會非常有用。
上一篇mysql分組提取前兩位
下一篇python 迭代器特性