Android Gson忽略列表<object>中的对象类型适配器

时间:2016-08-03 19:22:18

标签: android gson deserialization

class Response<T>(
        JHeader header;
        T result;
)

class JHeader(
        Int success;
        List<String> error;
)

class Character{
    @SerializedName("id_") Int id;
    @SerializedName("levelA") String level
    @SerializedName("a3") unit: String = "

    Character(Int id, String level) {
        this.id = id
        this.level= level
    }
}

Retrofit.Builder()
                .addCallAdapterFactory(rxAdapter)
                .addConverterFactory(GsonConverterFactory.create())
                .baseUrl(BASE_URL)
                .client(httpClient.build())
                .build()

public Observable<Response<List<Character>>> getCharacterById(characterID: Int){
        return apiService.getCharacter(characterID)
                .subscribeOn(Schedulers.io())
    }

我有一个为角色制作的自定义类型适配器。

GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder.registerTypeAdapter(Character.class, new CharacterTypeAdapter());
Gson gson = gsonBuilder.create();

Gson在反序列化列表时完全忽略了我的类型适配器,所以我猜因为泛型类型擦除,List被视为List对象或其他东西,所以我的适配器不会被使用。

使用Retrofit2。有没有什么办法可以用泛型做,而不必每次我需要解析包含列表的响应时都为列表创建自定义类?

0 个答案:

没有答案