谢谢您的建议,但我想出了一种可行的方法。这是我的方法…
首先,在我的
Pojo课堂上,我添加了一个JsonDeserializer,然后检查“数据”是对象还是基元,并据此设置相应的字段。
public class UserResponse { @SerializedName("status") private String status; @SerializedName("data") private Object mData; @SerializedName("response") private String response; @SerializedName("error") private String error; private String message; private String firstname; private String lastname; private String mobilenumber; private String emailid; private String timezone; public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } public String getFirstname() { return firstname; } public void setFirstname(String firstname) { this.firstname = firstname; } public String getLastname() { return lastname; } public void setLastname(String lastname) { this.lastname = lastname; } public String getMobilenumber() { return mobilenumber; } public void setMobilenumber(String mobilenumber) { this.mobilenumber = mobilenumber; } public String getEmailid() { return emailid; } public void setEmailid(String emailid) { this.emailid = emailid; } public String getTimezone() { return timezone; } public void setTimezone(String timezone) { this.timezone = timezone; } public String getStatus() { return status; } public void setStatus(String status) { this.status = status; } public Object getmData() { return mData; } public String getResponse() { return response; } public String getError() { return error; } public static class DataStateDeserializer implements JsonDeserializer<UserResponse> { @Override public UserResponse deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { UserResponse userResponse = new Gson().fromJson(json, UserResponse.class); JsonObject jsonObject = json.getAsJsonObject(); if (jsonObject.has("data")) { JsonElement elem = jsonObject.get("data"); if (elem != null && !elem.isJsonNull()) { if(elem.isJsonPrimitive()){ userResponse.setMessage(elem.getAsString()); }else{ userResponse.setFirstname(elem.getAsJsonObject().get("firstname").getAsString()); userResponse.setLastname(elem.getAsJsonObject().get("lastname").getAsString()); userResponse.setMobilenumber(elem.getAsJsonObject().get("mobilenumber").getAsString()); userResponse.setEmailid(elem.getAsJsonObject().get("emailid").getAsString()); userResponse.setTimezone(elem.getAsJsonObject().get("timezone").getAsString()); } } } return userResponse ; } }}然后将json解串器附加到GSON Builder的类型适配器,并像这样在Retrofit中给它创建GsonConvertor的方法
Gson gson = new GsonBuilder() .registerTypeAdapter(UserResponse.class, new UserResponse.DataStateDeserializer()) .create();Retrofit retrofit = new Retrofit.Builder() .baseUrl(ConstantUtils.base_URL) .addConverterFactory(GsonConverterFactory.create(gson)) .build();UserInfoRequestInterface requestInterface = retrofit.create(UserInfoRequestInterface.class); Call<UserResponse> call = requestInterface.getInfoUpdated(user_id, firstName, lastName, phoneNumber, email, null, null);
然后,我要做的就是检查message是否为null并相应地执行所需的操作。



