如何使用多个内部列表制作翻新模型

时间:2018-07-12 13:12:00

标签: android arrays json list retrofit2

我想为以下Json创建一个模型,并且当我使用jsonschema2poj网站时,返回的模型不正确,并且我无权访问IdjobTitles。我将Retrofit用于REST API。 请帮助我做出正确的模型。

{
  "res": [
    [
      {
        "name": "tom",
        "lname": "ford",
        "Status": 3
      }
    ],
    [
      {
        "Title1": "AAA"
      },
      {
        "Title2": "BBB"
      },
      {
        "Title3": "CCC"
      }
    ],
    [
      {
        "Id": "123",
        "job": "Doctor"
      }
    ]
  ]
}

2 个答案:

答案 0 :(得分:0)

通过这种方式制作pojo类。

public class ResItemItem{

@SerializedName("Status")
private int status;

@SerializedName("lname")
private String lname;

@SerializedName("name")
private String name;

public void setStatus(int status){
    this.status = status;
}

public int getStatus(){
    return status;
}

public void setLname(String lname){
    this.lname = lname;
}

public String getLname(){
    return lname;
}

public void setName(String name){
    this.name = name;
}

public String getName(){
    return name;
}

}

public class ResponseData{

@SerializedName("res")
private List<List<ResItemItem>> res;

public void setRes(List<List<ResItemItem>> res){
    this.res = res;
}

public List<List<ResItemItem>> getRes(){
    return res;
}

}

并将ResponeData pojo类传递到翻新的api respone中。

我希望您了解所有改装内容。

答案 1 :(得分:0)

由于您需要一种通用的机制,其中没有为数组定义的键,因此如果Map<String,String>数组中有多个项目,则可以使用res的数组,然后将其包装在另一个对象中。这本质上将给出List<Map<String, String>>。您的课程可以是:

public class ResultObject {
    // considering that the res object has multiple
    // array of nested array of objects, if not then
    // use just Map<String, String> without the List<>

    List<Map<String, String>> mMapString;  

    public Map<String, String> getMapForIndex(int index) throws IllegalAccessException {
        if (mMapString == null || index > mMapString.size()) {
            throw new IllegalAccessException("map is null or index is too large");
        }
        return mMapString.get(index);
    }
}

,您的父班将是:

public class ParentObject {
    @SerializedName("res")
    @Expose
    ResultObject mResult;

    public ResultObject getResult() {
        return mResult;
    }
}

但是,我建议使用更简洁的JSON结构,如果您也可以控制后端流程,则可以单独命名。