我有一个用例,其中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
?
提前感谢您的帮助!
答案 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);