Как отформатировать/спроектировать свой класс, если вы можете получить 2 разных запроса ответа от сервера?
Примечание. Дооснащение вызовет исключение, если формат ответа JSON (дизайн) отличается от вашего класса. Все поля из ответа JSON должны присутствовать в вашем классе.
Класс Java, например ответ JSON:
public class RequestResponseLogin
{
public ResponseLogin status;
public class ResponseLogin
{
public boolean success;
public List<String> message;
}
}
Ответ JSON:
{
"status" : {
"success" : false
"message" : {
"Invalid credientials",
"....",
"...."
}
}
}
Вот как я запрашиваю ответ:
interface iLogin
{
@GET
RequestResponseLogin loginUser(@Query("user") String user, @Query("pass") String pass);
}
// ....
RequestResponseLogin response = data.loginUser("admin", "abc123");
Если вход не удался, то public List<String> message;
будет заполнен сообщениями с веб-сервера:
message[0] = 'Invalid credentials';
message[1] = 'Invalid username';
message[2] = 'Password match correct';
Но если веб-сервер ничего не отвечает (успешный вход в систему), то я получаю исключение путем модификации, потому что public List<String> message;
пуст, веб-сервер ответил простым пустым строковым сообщением, а не массивом строк. Это сработает, если я изменю public List<String> message;
на public String message;
, но я не могу, потому что, если вход не удастся, это должен быть массив строк.