Android - Как создать класс отображения для GSON

1

если мой WS-успех, то получите следующий ответ

{"status":"SUCCESS","reason":"User phrase returned successfully.","response":{"isValidUser":"1","Phrase":"montu"}}

если тот же самый WS не удается получить следующий ответ

{"status":"FAILED","reason":"Invalid Username","response":false}

Здесь я использую gson для сопоставления.

Класс сопоставления

class HomeScreenUserResponse extends Object {
  public String status;
  public String reason;
  public checkUser response;
}

class checkUser {
  String isValidUser;
  String Phrase;
}

Но это отображение не работает, если веб-служба не работает. Он работает только для успеха ws. Как создать единый класс сопоставления для обоих случаев.

Теги:
gson

2 ответа

0

Вы должны зарегистрировать адаптер специального типа для этого типа. Вы захотите проверить значение "ответ" и вести себя по-разному в зависимости от того, является ли этот объект или логическим.

  • 0
    Как это сделать, пожалуйста, предоставьте образец кода?
0

Может быть, что-то вроде этого

class Class {
  boolean status;
  String reason;
  Responce responce;

  public Class(JSONObject jObject) {
    status = jObject.getString("status").equals("SUCCESS") ? true : false;
    reason = jObject.getString("reason");
    if (status) {
      responce = new Responce(jObject.getJSONObject("response"));
    } else {
      responce = null;
    }
  }
}

class Responce{
  String isValidUser;
  String Phrase;
  public Responce(JSONObject jObject){
   //Loading json data
  }
}
  • 1
    Я не думаю, что это сработает. Gson не может обрабатывать объект, десериализованный из разных типов.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню