GSON - json到通用对象

时间:2016-01-31 22:53:09

标签: json serialization gson

我有一个用例,其中API将在json中获得Key | Value对的通用集合。输入json中没有已定义的属性。我需要将它映射到通用对象并处理数据..

JSON输入:

"[{ "PostalCode": "345", "Region": "MA", "Enabled": "True" },
  {"PostalCode": "989", "Country": "US", "Enabled": "True" }
]";

我正在使用GSON将其反序列化为java对象。将其映射到通用对象,如:

Object obj = new GsonBuilder().create()
                              .fromJson(jsonInput, Object.class);

我得到了一个HashMaps的数组列表对象(com.google.gson.internal.LinkedTreeMap)。

从这里我如何获得个人密钥和值key = PostalCode& value = 345

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

由于您已经获得了com.google.gson.internal.LinkedTreeMap的数组列表,现在您需要迭代此列表以获取每个键值对:

Object obj = new GsonBuilder().create().fromJson(jsonInput, Object.class);

        List<LinkedTreeMap<Object, Object>> jsonMapList = (List<LinkedTreeMap<Object, Object>>) obj;

        for (LinkedTreeMap<Object, Object> jsonMap : jsonMapList) {

            Set<Entry<Object, Object>> entrySet = jsonMap.entrySet();

            for (Entry<Object, Object> entry : entrySet) {

                System.out.println(entry.getKey() + " " + entry.getValue());
            }

        }

答案 1 :(得分:0)

你可以这样做。我测试了它。 导入这个

import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;

Type type = new TypeToken<List<LinkedTreeMap<Object, Object>>>(){}.getType();
List<Map<Object, Object>> treeMap = newGsonBuilder().create().fromJson(jsonInput,type);