将动态序列化名称与 gson 匹配
Match dynamic serialized name with gson
我正在解析维基百科 API 数据,但不知道如何处理在每个新搜索请求中更改序列化名称。它始终是 "pages" 数组 (1156934) 的第一项。我正在使用 Q204873 wiki 数据代码请求获取页面标题,例如 "Ammonium carbonate"。但是我在请求之前不知道维基百科页面ID(1156934)。
我的 gson 模型有明显的问题(1156934 适合这里,但它会随着我在新搜索查询期间使用不同的维基数据 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 + '\'' +
"}";
}
}
如何只反序列化 pages 数组的第一项?我也可以提供多个Q码来接收多个标题,但是如何为每个数组项使用相同的gson模型?
不知道json
中的数据键值时可以使用HashMap
像下面这样使用
@SerializedName("pages")
public HashMap 页面
您也可以使用自定义反序列化器使其工作
https://futurestud.io/tutorials/gson-advanced-custom-deserialization-basics
我正在解析维基百科 API 数据,但不知道如何处理在每个新搜索请求中更改序列化名称。它始终是 "pages" 数组 (1156934) 的第一项。我正在使用 Q204873 wiki 数据代码请求获取页面标题,例如 "Ammonium carbonate"。但是我在请求之前不知道维基百科页面ID(1156934)。
我的 gson 模型有明显的问题(1156934 适合这里,但它会随着我在新搜索查询期间使用不同的维基数据 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 + '\'' +
"}";
}
}
如何只反序列化 pages 数组的第一项?我也可以提供多个Q码来接收多个标题,但是如何为每个数组项使用相同的gson模型?
不知道json
中的数据键值时可以使用HashMap像下面这样使用
@SerializedName("pages") public HashMap 页面
您也可以使用自定义反序列化器使其工作
https://futurestud.io/tutorials/gson-advanced-custom-deserialization-basics