我正在解析Wikipedia API数据,但是不了解如何在每个新的搜索请求中处理更改序列化名称的问题。它始终是“页面”数组的第一项(1156934)。我正在使用Q204873 Wiki数据代码发出请求以获取页面标题,例如“碳酸铵”。但是在请求之前我不知道Wikipedia pageID(1156934)。
我的带有明显问题的gson模型(1156934在这里适合,但随着我在新的搜索查询期间使用不同的wikidata Q代码发出请求而改变):
public class WikiPageList {
@SerializedName("WikiPage") //PROBLEM
private WikiPage wikiPage;
public void setWikiPage(WikiPage wikiPage){
this.wikiPage = wikiPage;
}
public WikiPage getWikiPage(){
return wikiPage;
}
@Override
public String toString(){
return
"WikiPageList{" +
"WikiPage = '" + wikiPage + '\'' +
"}";
}
}
如何仅反序列化页面数组的第一项?我还可以提供多个Q代码来接收多个标题,但是如何对每个数组项使用相同的gson模型?
答案 0 :(得分:2)
当您不知道json中的数据键值时,可以使用HashMap
使用方式如下
@SerializedName(“ pages”) 公开的HashMap页面
您还可以使用自定义解串器使其工作
https://futurestud.io/tutorials/gson-advanced-custom-deserialization-basics