将动态序列化名称与gson匹配

时间:2018-08-04 20:52:38

标签: android arrays json wikipedia-api gson

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

wikipedia response

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 + '\'' +
        "}";
    }

}


如何仅反序列化页面数组的第一项?我还可以提供多个Q代码来接收多个标题,但是如何对每个数组项使用相同的gson模型?

1 个答案:

答案 0 :(得分:2)

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

使用方式如下

@SerializedName(“ pages”) 公开的HashMap页面

您还可以使用自定义解串器使其工作

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