从改造查询中获取地图

时间:2016-04-05 19:00:13

标签: java android retrofit retrofit2

我有使用改装的JSON

[{  
  "id":"1",
  "name":"name",
  "fields_json":{  
     "f1":"value1",
     "f2":"value2",
     "f3":"value3"
  }
},{  
  "id":"2",
  "name":"name2",
  "fields_json":{  
     "f1":"value1",
     "f2":"value2",
     "f3":"value3"
  }
}]

我想获取人员名单(长ID,字符串名称,地图字段)

如何在此课程中将fields_json作为Map?

2 个答案:

答案 0 :(得分:1)

如果你稍微更改了json,那么你可以使用特殊的响应类 {"人员":[{id":" 1"," name":" name",...}]}

public class Response {

     @SerializedName("persons")
     @Expose
     public ArrayList<Person> persones;
}

public class Person {

    @SerializedName("id")
    @Expose
    public String id;
    @SerializedName("name")
    @Expose
    public String name;
    @SerializedName("fields_json")
    @Expose
    public FieldsJson fieldsJson;

}

public class FieldsJson {

    @SerializedName("f1")
    @Expose
    public String f1;
    @SerializedName("f2")
    @Expose
    public String f2;
    @SerializedName("f3")
    @Expose
    public String f3;
}

并将此类设置为响应

@POST("/url")
Call<Response> getPersones(
        ....
);

因此,如果您希望您可以将公共字段Json描述为Map

Map<String, Object> fieldsJson

答案 1 :(得分:0)

无法将其添加为Map对象。 相反,您需要创建另一个包含f1-f3变量的java类。 然后将这个新类添加为名为fields_json的变量到当前类。