Retrofit解析JSON动态密钥

时间:2016-11-30 19:53:14

标签: android json retrofit2 gson

我是Retrofit的新手。如何使用改造解析下面的Json?

{
   "data": {
      "Aatrox": {
         "id": 266,
         "title": "a Espada Darkin",
         "name": "Aatrox",
         "key": "Aatrox"
      },
      "Thresh": {
         "id": 412,
         "title": "o Guardião das Correntes",
         "name": "Thresh",
         "key": "Thresh"
       }
   },
   "type":"champion",
   "version":"6.23.1"
}

2 个答案:

答案 0 :(得分:9)

您可以让模型POJO包含一个Map<String, Champion>来反序列化,以处理动态密钥。

示例:

public class ChampionData {
    public Map<String, Champion> data;
    public String type;
    public String version;
}

public class Champion {
    public int id;
    public String title;
    public String name;
    public String key;
}

除此之外,我不熟悉Retrofit,但正如评论中的某些人所说,反序列化是由Gson完成的:

public ChampionData champions = new Gson().fromJson(json, ChampionData.class);

因此,为了建立其他人发布的答案,您可以执行以下操作,假设您已添加GsonConverterFactory

public interface API {
    @GET("path/to/endpoint")
    Call<ChampionData> getChampionData();
}

答案 1 :(得分:1)

假设Retrofit2,您需要做的第一件事是在构建Retrofit实例时调用以下内容。

addConverterFactory(GsonConverterFactory.create())

然后,只需编写一个映射到json的POJO(例如MyPojoClass),然后在Retrofit界面中添加如下内容。

Call<MyPojoClass> makeRequest(<some params>);