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

标签 android arrays json wikipedia-api gson

我正在解析维基百科 API 数据,但不知道如何处理每个新搜索请求的序列化名称的更改。它始终是“pages”数组的第一项 (1156934)。我正在使用 Q204873 wiki 数据代码发出请求来获取页面标题,例如“碳酸铵”。但在请求之前我不知道维基百科 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 模型?

最佳答案

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

像下面这样使用

@SerializedName(“页面”) 公共(public) HashMap 页面

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

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

关于android - 将动态序列化名称与 gson 匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51689484/

相关文章:

javascript - 使用 JSON 中的属性之一查找子对象

android - Logcat和项目未显示任何错误

android - 如何将 ArrayList 对象绑定(bind)到 android GridView?

javascript - 数组如何按两个属性分组?

c++ - 数据管理错误 C++

json - 通过 JSON API 将嵌套结构映射到具有相同数据的不同嵌套结构

json - Kotlinx.Serializer - 创建一个快速的 JSON 发送

java - maven pom xml 文件错误 : Building Android project

android - 错误 : Parceler: Unable to find read/write generator for type io. Realm .RealmList

原始数组类型上的 Java Arrays.asList 产生意外的列表类型