因为这个 json 对象使用 int 作为字段键,所以在反序列化时不能指定字段键名。因此我需要先从集合中提取值集:
JsonParser parser = new JsonParser();
JsonObject obj = parser.parse(json).getAsJsonObject();
Set<Entry<String,JsonElement>> set = obj.entrySet();
现在“set”包含一组,在我的例子中是 <1,{id:1,value:something}>。
因为这里key没用,我只需要value集合,所以我迭代set提取value集合。
for (Entry<String,JsonElement> j : set) {
JsonObject value = (JsonObject) j.getValue();
System.out.println(value.get("id"));
System.out.println(value.get("value"));
}
如果你有更复杂的结构,比如嵌套的 json 对象,你可以有这样的东西:
for (Entry<String,JsonElement> j : locations) {
JsonObject location = (JsonObject) j.getValue();
JsonObject coordinate = (JsonObject) location.get("coordinates");
JsonObject address = (JsonObject) location.get("address");
System.out.println(location.get("location_id"));
System.out.println(location.get("store_name"));
System.out.println(coordinate.get("latitude"));
System.out.println(coordinate.get("longitude"));
System.out.println(address.get("street_number"));
System.out.println(address.get("street_name"));
System.out.println(address.get("suburb"));
}
希望能帮助到你。