如何在gson上为泛型类型使用自定义封装?

kyxcudwk  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(145)

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

gwo2fgha

gwo2fgha1#

而不是这样做:

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

字符串
像这样注册您的验证器:

gsonBuilder.registerTypeAdapter(
        new TypeToken<CustomResponse<POJOA>>(){}.getType(), new POJOADeserializer());

相关问题