如何使用动态密钥为json创建POJO类以进行改造?

时间:2017-06-30 10:24:44

标签: java android json gson retrofit2

{
  "batchcomplete": "",
  "warnings": {
    "main": {
      "*": "Unrecognized parameter: rvprop."
    },
    "extracts": {
      "*": "\"exlimit\" was too large for a whole article extracts request, lowered to 1."
    }
  },
  "query": {
    "normalized": [
      {
        "from": "pune",
        "to": "Pune"
      }
    ],
    "pages": {
      "164634": {
        "pageid": 164634,
        "ns": 0,
        "title": "Pune",
        "extract": ""
                }
            }
      }
}

在上面的json中,"页面内的数字键"对象是动态的。那我怎么为这个json做一个pojo。

拜托,拜托,请帮助我。 我已经为此搜索了很多,但没有任何效果。 我也是改装的初学者,所以请详细回答。 我已经看到一些答案提到了这种情况下使用地图(例如Parse Dynamic Key Json String using Retrofit)。但这些答案没有得到恰当的阐述。请帮我彻底理解。

2 个答案:

答案 0 :(得分:2)

您可以在hashmap班级中使用A Pages获取其他属性/动态属性

private Map<String, Object> additionalProperties = new HashMap<String, Object>();

@JsonAnyGetter
public Map<String, Object> getAdditionalProperties() {
return this.additionalProperties;
}

@JsonAnySetter
public void setAdditionalProperty(String name, Object value) {
this.additionalProperties.put(name, value);
}

答案 1 :(得分:0)

public class Query {
    private List<Address> normalized ;
    private Map<String, Pages> pages;
    //getter & Setter
    public Map<String, Pages>  getPages() {
        return pages;
    }
    public void setPages(Map<String, Pages>  pages) {
        this.pages = pages;
    }

    public class Pages {
        private String pageid;
        private int ns;
        private String title;
        private String extract;
        //define all getter and setter methods
    }

    public class Address{
    private String from;
    private String to;
    }
}

//通过使用setter方法在Pages类中添加数据。页面pageObj = new Page(); pageObj.setPageid(“ 164634”); pageObj.setns(0); ... 创建本地Map Map页面Obj = new HashMap <>(); pagesObj.put(“ 164634”,pageObj); 使用setPages(pagesObj);设置值