【问题标题】:Match dynamic serialized name with gson将动态序列化名称与 gson 匹配
【发布时间】:2018-08-04 20:52:38
【问题描述】:

我正在解析 wikipedia API 数据,但不知道如何处理在每个新搜索请求上更改序列化名称。它始终是“页面”数组 (1156934) 的第一项。我正在使用 Q204873 wiki 数据代码请求获取页面标题,例如“碳酸铵”。但在请求之前我不知道 wikipedia pageID (1156934)。

This response URL query


我的 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 模型?

【问题讨论】:

标签: android arrays json wikipedia-api gson


【解决方案1】:

不知道json中的数据键值时可以使用HashMap

像下面这样使用

@SerializedName("pages") 公共 HashMap 页面

您也可以使用自定义反序列化器来使其工作

https://futurestud.io/tutorials/gson-advanced-custom-deserialization-basics

【讨论】:

  • 能否提供更多HashMap的实现示例以及它是什么的解释?这对我来说是新的。
  • 以此作为基本示例findnerd.com/list/view/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-26
  • 2017-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多