Modify JSON to POJO

I am new to android and I am usig retrofit.

The problem is that I cannot receive the request POJOfrom the request.

my request:

@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 server response:

  {
    "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

and my POJO class:

 @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;
        }
    }

How do I populate the ModelLoginResponsePOJO class to get a full server response ???

+4
source share
2 answers

Try defining the ModelLoginResponse class as follows:

@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;
}
}

If you use the GSON library to parse the JSON string, you only need the default constructor with no arguments, and each "field" of the JSON string needs a corresponding attribute in the target class.

0
source

, , , , , , .

"lc", , , ​​ HashMap.

"stg", , , 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
}

, .

0

All Articles