我正在使用Retrofit 2.0和gson将json转换为pojo。 我得到了json对象
{
"type": "champion",
"format": "standAloneComplex",
"version": "9.6.1",
"data": {
"Aatrox": {...},
"Ahri": {...},
...
} }
我的问题是,内部数据中的每个条目都是一个新类(它是同一类,但名称不同)
我可以单独访问每个班级
public class Champions {
@SerializedName("type")
@Expose
public String type;
@SerializedName("format")
@Expose
public String format;
@SerializedName("version")
@Expose
public String version;
@SerializedName("data")
@Expose
public Data data;
这有效
public class Data {
@SerializedName("Aatrox")
@Expose
public Champion aatrox;
@SerializedName("Ahri")
@Expose
public Champion ahri;}
但是
public class Data {
publc List<Champion> champions = new ArrayList<>();
不
如何获取列表中的所有条目?
我试图将List<Champion>
放在Data
中,但是我不知道要在@SerializedName
中放入什么。
有人建议如何从数据中检索List<Champion>
吗?
我从中获取json的网站是http://ddragon.leagueoflegends.com/cdn/9.6.1/data/en_US/champion.json
答案 0 :(得分:2)
设置data
变量数据类型Map<String, Champion>
而不是设置object
或List
,然后将以下getter方法添加到模型中以检索List<Champion>
public List<Champion> getChampions(){
if(data != null){
return new ArrayList<Value>(data.values());
}
return null; // you can set return new ArrayList<>(); to avoid null exception
}
答案 1 :(得分:0)
我在项目中使用了类似的代码。也许会起作用。自己安排。
Map<String, Champion> championList;
List<String> keyset = new ArrayList<>(championList.keySet());
List<String> values = new ArrayList<>(championList.values());
for (int i = 0; i < values.size(); i++) {
NewItem item = new NewItem(values.get(i), keyset.get(i));}