我是android的新手,我是usig retrofit。
问题是我不能从request获取我的POJO。
我的要求是:
@FormUrlEncoded
@POST("/index.php")
void login(@Field("io") String command,
@Field("lu") String userName,
@Field("lp") String password,
@Field("lm") String imei,
@Field("l") int language,
RestCallback<ModelLoginResponse> callback);服务器JSON响应为:
{
"tk": "thdoz4hwer32",
"pn": "1",
"lc": {
"1": "Opel Combo",
"3": "VW Crafter",
"7": "Opel Vivaro"
},
"stg": {
"rs": "30",
"sml": "http://exemple.mob.ru",
"ssl": "index.php"
}
}
where 1,3,7 are different every time和我的POJO类:
@Parcel
public class ModelLoginResponse {
@SerializedName("pn")
private String personalNumber;
@SerializedName("tk")
private String token;
// ?????? for "lc" and "stg"
public void ModelResponse(String personalNumber, String token){
this.personalNumber = personalNumber;
this.token = token;
}
public String getPersonalNumber() {
return personalNumber;
}
public void setPersonalNumber(String personalNumber) {
this.personalNumber = personalNumber;
}
public String getToken() {
return token;
}
public void setToken(String token) {
this.token = token;
}
}我应该如何完成我的ModelLoginResponse POJO类以获得完整的服务器响应?
发布于 2016-08-26 20:43:39
我知道这是一个古老的问题,你可能已经弄明白了,但我只是在这里发布一个答案,以便其他人可能会发现它是有帮助的。
对于"lc“字段,每个响应的键值可能不同,您可以使用诸如HashMap之类的映射数据结构。
您可以对"stg“字段使用相同的Map结构,但如果您知道键总是相同的,那么为该项目创建另一个POJO类通常会更好。
简而言之,你的反应会是这样的:
@Parcel
public class ModelLoginResponse {
@SerializedName("pn")
private String personalNumber;
@SerializedName("tk")
private String token;
@SerializedName("lc")
private HashMap<String, String> lcMap;
@SerializedName("stg")
private StgResponse stgResponse;
//add getters and setters if you need them.
} 其中StgResponse将类似于:
public class StgResponse {
@SerializedName("rs")
private Integer rs;
@SerializedName("sml")
private String sml;
@SerializedName("ssl")
private String ssl;
//Getters and setters
}希望这能有所帮助。
发布于 2015-06-24 22:34:50
尝试这样定义您的ModelLoginResponse类:
@Parcel
public class ModelLoginResponse {
@SerializedName("tk")
private String token;
@SerializedName("pn")
private String personalNumber;
@SerializedName("lc")
private String[3] lc;
@SerializedName("stg")
private String[3] stg;
public ModelResponse(){}
public String getPersonalNumber() {
return personalNumber;
}
public void setPersonalNumber(String personalNumber) {
this.personalNumber = personalNumber;
}
public String getToken() {
return token;
}
public void setToken(String token) {
this.token = token;
}
public void setLc(String[] lc){
this.lc = lc;
}
public void setStg(String[] stg){
this.stc = stg;
}
public String getLc(){
return lc;
}
public String getStg(){
return stg;
}
}如果要解析JSON字符串,则使用GSON库,只需要一个没有参数的默认构造函数,并且JSON字符串的每个“字段”都需要目标类中对应的属性。
https://stackoverflow.com/questions/31028792
复制相似问题