私はこのようなjsonを持っています
{
user:{
name:abc
email:a@bc.com
.....
}
responseCode:1
responseMessage:Done
}
GSONコンバーター付きのRetrofit 2を使用しています。すべての JSON にresponseCodeとresponseMessageの 2 つのパラメーター が表示されます。差別化パラメータは「ユーザー」
だから私はクラスを作成しました
class BaseResponse {
public int responseCode;
public String responseMessage;
}
次に、残りの POJOS は次のように拡張されます。
class User extends BaseResponse {
public String name;
public String email;
}
問題は、GSON が「ユーザー」部分を逆シリアル化しないことです。私は deserializer を書かなければならないと考えました。
return new JsonDeserializer<T>() {
@Override
public T deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context)
throws JsonParseException {
JsonObject jsonObject = json.getAsJsonObject();
int messageCode = jsonObject.get("responseCode").getAsInt();
if (messageCode == 1) {
**// What do I do now?**
}
return null;
}
};
問題は、GSON がユーザー オブジェクト要素がすべて null の User オブジェクトを返すことです。
私は一種の修正中です。とにかくこれが可能ですか?JsonObject jo = json.getAsJsonObject().getAsJsonObject("user");
または、親によって子クラスのものを取得します。どんな助けでも大歓迎です。