gson 连接两个HashMap值

wribegjk  于 2022-11-06  发布在  其他
关注(0)|答案(2)|浏览(144)

我得到了这个JSON字符串:
String json = "{\"countries\":{\"2\":\"China\",\"3\":\"Russia \",\"4\":\"USA\"},\"capitals\":{\"2\":Beijing,\"4\":null,\"3\":Moscow}}";我将字符串转换为HashMap,使用的是:

HashMap<String,Object> map = new Gson().fromJson(json, new TypeToken<HashMap<String, Object>>(){}.getType());
   System.out.println(map.get("countries")+"@@@@@"+map.get("capitals"));

现在我的输出是:

{2=China, 3=Russia , 4=USA}@@@@@{2=Beijing, 4=null, 3=Moscow}

我想用数字来连接这些值。我想创建两个数组列表,如下所示:
A)- [中国、俄罗斯、美国]
B)- [北京、莫斯科,空]
我该怎么做?

gupuwyp2

gupuwyp21#

首先,您需要将map.get("label")转换为LinkedTreeMap<Integer, String>,然后使用其值创建新的ArrayList

String json = "{\"countries\":{\"2\":\"China\",\"3\":\"Russia \",\"4\":\"USA\"},\"capitals\":{\"2\":Beijing,\"4\":null,\"3\":Moscow}}";
        HashMap<String,TreeMap<Integer, String>> map = new Gson().fromJson(json, new TypeToken<HashMap<String, TreeMap<Integer, String>>>(){}.getType());
        ArrayList<String> countries = new ArrayList<>(map.get("countries").values());
        System.out.println(countries);

        ArrayList<String> capitals = new ArrayList<>(map.get("capitals").values());
        System.out.println(capitals);
vi4fp9gy

vi4fp9gy2#

您可以迭代country键集来填充capital数组:

List<String> countries = new ArrayList<>(countriesMap.values());
List<String> capitals = new ArrayList<>();

for (String countryKey : countriesMap.keySet()) {
    capitals.add(capitalsMap.get(countryKey));
}

相关问题