如何在gson上对泛型类型使用自定义反序列化?

Dro*_*der 3 java android json gson

对于标准POJO,我们可以使用以下内容

GsonBuilder gson = new GsonBuilder();
gson.registerTypeAdapter(MyType2.class, new MyTypeAdapter());
gson.registerTypeAdapter(MyType.class, new MySerializer());
gson.registerTypeAdapter(MyType.class, new MyDeserializer());
gson.registerTypeAdapter(MyType.class, new MyInstanceCreator());
Run Code Online (Sandbox Code Playgroud)

如果POJO是通用的怎么样?该GSON用户指南中没有提到它.下面是我的代码,但它不是正确的.

gsonBuilder.registerTypeAdapter(CustomResponse<POJOA>.getClass(), new POJOADeserializer());
            gsonBuilder.registerTypeAdapter(CustomResponse<POJOB>.getClass(), new POJOBDeserializer());
            gsonBuilder.registerTypeAdapter(CustomResponse<POJOC>.getClass(), new POJOCDeserializer());
Run Code Online (Sandbox Code Playgroud)

Ego*_*uba 6

而不是这样做:

gsonBuilder.registerTypeAdapter(CustomResponse<POJOA>.getClass(), new POJOADeserializer());
Run Code Online (Sandbox Code Playgroud)

像这样注册您的反序列化器:

gsonBuilder.registerTypeAdapter(
        new TypeToken<CustomResponse<POJOA>>(){}.getType(), new POJOADeserializer());
Run Code Online (Sandbox Code Playgroud)