2012-04-24 2 views
1

если мой WS имеет успех, то получите следующий ответандроид - Как создать класс отображения для gson

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

если же WS терпит неудачу, то получите следующий ответ

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

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

Mapping класс

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

class checkUser { 
    String isValidUser; 
    String Phrase; 
} 

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

ответ

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 не может обрабатывать объект, который десериализуется из разных типов. –

0

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

+0

Как это сделать, укажите код примера? – naresh