android - 将动态序列化名称与 gson 匹配
问题描述
我正在解析 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 + '\'' +
"}";
}
}
如何仅反序列化 pages 数组的第一项?我也可以提供多个 Q 代码来接收多个标题,但是如何为每个数组项使用相同的 gson 模型?
解决方案
不知道json中的数据键值时可以使用HashMap
像下面这样使用
@SerializedName("pages") 公共 HashMap 页面
您还可以使用自定义反序列化器使其工作
https://futurestud.io/tutorials/gson-advanced-custom-deserialization-basics
推荐阅读
- python - 具有不同参数的 Python 中的继承
- javascript - 如何在“确定”和“取消”事件上有一个标题为真/假的确认对话框?
- c# - 有没有办法在 asp.net 标签中应用 css 后代组合器
- python - 如何使用多处理Queue()在进程之间传递变量?
- html - 我想把我的滑动 div 放在主菜单栏后面
- if-statement - 为什么 if 语句中的单个条件不能有多个参数?
- r - 是否有将多个主键信息组合到表中的功能?
- php - Nginx ERROR:Bad Request”,同时从上游、客户端读取响应标头
- regex - 获取非前导零的数字(包括“-”)
- python - 如何压缩 3 个不同大小的列表