从webservice调用向arraylist添加对象列表

时间:2017-08-17 05:30:24

标签: java android arraylist

我正在使用一个公共API,它提供了一个对象列表,但它们不在ArrayList中,如下所示:

仅供参考,这只是JSON响应的一部分。

仅供参考2:已经使用Retrofit的Gson

解析了这个问题
"dataCenters": {
        "Peru": {
            "capacity": "full",
            "load": "idle"
        },
        "EU West": {
            "capacity": "full",
            "load": "low"
        }
  }

如您所见,dataCenters对象不是列表。我怎样才能将这个对象列表添加到arraylist?

我已经将所有dataCenters都设置为DataCentersStatus的相同类型的对象,这样我就没有很多不同模型的列表,这些模型基本上都是相同的,只是有不同的名称。

谢谢

1 个答案:

答案 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是一个包含字段namecapacityload的类。

您可以找到更多信息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>