【发布时间】:2017-02-07 19:54:12
【问题描述】:
我开始使用带有 Retrofit 的 Gson,而不是 Jackson,来解析来自 Wikipedia API 的一些 Json,其结构如下:
{
"batchcomplete": "",
"query": {
"pages": {
"21721040": {
"pageid": 21721040,
"ns": 0,
"title": "Stack Overflow",
"extract": "Stack Overflow
在“pages”对象中,我试图将下一个块映射到键/值类型 String 和 WikiSummary 的 Map 对象,但该对象返回 null。通过 Jackson,如果我没记错的话,你可以像这样直接映射,因为我不知道“pages”在其中包含的对象值。
WikiPages.class
public class WikiPages {
public Map<String, WikiSummary> summaryMap;
public WikiPages(Map<String, WikiSummary> summaryMap) {
this.summaryMap = summaryMap;
}
public Map<String, WikiSummary> getSummaryMap() {
return summaryMap;
}
public void setSummaryMap(Map<String, WikiSummary> summaryMap) {
this.summaryMap = summaryMap;
}
}
维基摘要
public class WikiSummary {
public int pageid;
public String title;
public String extract;
public WikiSummary(int pageid, String title, String extract) {
this.pageid = pageid;
this.title = title;
this.extract = extract;
}
public int getPageid() {
return pageid;
}
public void setPageid(int pageid) {
this.pageid = pageid;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getExtract() {
return extract;
}
public void setExtract(String extract) {
this.extract = extract;
}
}
【问题讨论】:
-
因为您的 json 属性是动态的,最简单的解决方案是将页面设为 HashMap
。 Gson 可以很好地解析。
标签: android json gson retrofit