Я хочу получить error
, когда это произойдет. Итак, для этого я поместил переменную в свой класс для error
. И у меня есть переменная для «нормального тела».Класс GSON с разным корпусом (ошибка/NoError)
public class User {
@SerializedName("error")
public Error ErrorUser;
@SerializedName("infos")
public Infos Infos;
public class Infos {
@SerializedName("login")
public String Login;
@SerializedName("lastname")
public String LastName;
@SerializedName("firstname")
public String FirstName;
@SerializedName("email")
public String Email;
@SerializedName("internal_email")
public String EmailIntern;
@SerializedName("location")
public String Location;
@SerializedName("netsoul")
public String Netsoul;
@SerializedName("studentyear")
public int SchoolYear;
public Infos(String login,
String lastname,
String firstName,
String email,
String emailIntern,
String location,
String netsoul,
int schoolYear){
this.Login = login;
this.LastName = lastname;
this.FirstName = firstName;
this.Email = email;
this.EmailIntern = emailIntern;
this.Location = location;
this.Netsoul = netsoul;
this.SchoolYear = schoolYear;
}
}
public User(Error error){
Log.d("Here", "Work");
this.ErrorUser = error;
}
public User(Infos infos){
this.Infos = infos;
}
}
С нормальным телом (класс) Информации эту работу, но когда я пытаюсь получить ошибку, когда это происходит я получаю user.ErrorUser on reference null object
. Поэтому я предполагаю, что user
имеет значение null, но я не знаю почему.
Вызов
ApiService.getApiService().getInformationUser(SessionManager.getInstance().getToken()).enqueue(new Callback<User>() {
@Override
public void onResponse(Response<User> response, Retrofit retrofit) {
User user = response.body();
if (user.ErrorUser == null)
Log.d("Here", user.Infos.FirstName);
else
Log.d("Here", user.ErrorUser.Message);
}
@Override
public void onFailure(Throwable t) {
}
});
Класс ошибки
public class Error {
@SerializedName("error")
public String Message;
@SerializedName("code")
public int Code;
public Error(String message, int code){
this.Message = message;
this.Code = code;
}
}
Если message
и code
это иногда обратное развитие, мне нужен другой конструктор?
Возможный дубликат http://stackoverflow.com/questions/31516581/retrofit-handle-json-key-which-has-a-dynamic-structure-array-object –
Это не совсем то же самое Probleme. –