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

问题描述 投票:0回答:1

对于标准 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());

如果 POJO 是通用的呢? Gson 用户指南没有提及。下面是我的代码,但它不是正确的。

gsonBuilder.registerTypeAdapter(CustomResponse<POJOA>.getClass(), new POJOADeserializer());
gsonBuilder.registerTypeAdapter(CustomResponse<POJOB>.getClass(), new POJOBDeserializer());
gsonBuilder.registerTypeAdapter(CustomResponse<POJOC>.getClass(), new POJOCDeserializer());
java android json gson
1个回答
10
投票

而不是这样做:

gsonBuilder.registerTypeAdapter(CustomResponse<POJOA>.getClass(), new POJOADeserializer());

像这样注册你的解串器:

gsonBuilder.registerTypeAdapter(
        new TypeToken<CustomResponse<POJOA>>(){}.getType(), new POJOADeserializer());
© www.soinside.com 2019 - 2024. All rights reserved.