1

私はこのようなjsonを持っています

{
    user:{
            name:abc
            email:a@bc.com
            .....    
          }
    responseCode:1
    responseMessage:Done
}

GSONコンバーター付きのRetrofit 2を使用しています。すべての JSON にresponseCoderesponseMessageの 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");または、親によって子クラスのものを取得します。どんな助けでも大歓迎です。

4

1 に答える 1