我正在使用一个公共API,它提供了一个对象列表,但它们不在ArrayList中,如下所示:
仅供参考,这只是JSON响应的一部分。
仅供参考2:已经使用Retrofit的Gson
解析了这个问题"dataCenters": {
"Peru": {
"capacity": "full",
"load": "idle"
},
"EU West": {
"capacity": "full",
"load": "low"
}
}
如您所见,dataCenters对象不是列表。我怎样才能将这个对象列表添加到arraylist?
我已经将所有dataCenters都设置为DataCentersStatus的相同类型的对象,这样我就没有很多不同模型的列表,这些模型基本上都是相同的,只是有不同的名称。
谢谢
答案 0 :(得分:1)
你可以使用gson做到这一点。
JsonParser parser = new JsonParser();
JsonElement element = parser.parse(jsonAsString);
JsonElement dataCenters = element.getAsJsonObject().get("dataCenters");
Set<Map.Entry<String, JsonElement>> entries = dataCenters.getAsJsonObject().entrySet();
List<DataCenter> list = new LinkedList<>();
Gson gson = new Gson();
for (Map.Entry<String, JsonElement> entry: entries) {
DataCenter dc = gson.fromJson(entry.getValue(), DataCenter.class);
dc.setName(entry.getKey());
list.add(dc);
}
DataCenter
是一个包含字段name
,capacity
和load
的类。
您可以找到更多信息here。
Maven依赖
<!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.1</version>
</dependency>