栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

使用Gson反序列化ImmutableList

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用Gson反序列化ImmutableList

更新:有https://github.com/acebaggins/gson-
serializers
,其中涵盖了许多番石榴集合:

  • ImmutableList
  • ImmutableSet
  • ImmutableSortedSet
  • ImmutableMap
  • ImmutableSortedMap

如何编写适用于所有ImmutableList的单个反序列化器?

这个想法很简单,将传递的

Type
表示形式
ImmutableList<T>
转换为
Type
表示形式
List<T>
,使用内置
Gson
功能创建一个
List
并将其转换为一个
ImmutableList

class MyJsonDeserializer implements JsonDeserializer<ImmutableList<?>> {    @Override    public ImmutableList<?> deserialize(JsonElement json, Type type, JsonDeserializationContext context) throws JsonParseException {        final Type type2 = ParameterizedTypeImpl.make(List.class, ((ParameterizedType) type).getActualTypeArguments(), null);        final List<?> list = context.deserialize(json, type2);        return ImmutableList.copyOf(list);    }}

ParameterizedTypeImpl
我使用的Java库中有多个类,但是它们都不是供公共使用的。我用进行了测试
sun.reflect.generics.reflectiveObjects.ParameterizedTypeImpl

如何为所有ImmutableList注册它?

这部分很简单,register的第一个参数是

java.lang.reflect.Type
将我误认为使用using
ParameterizedType
,而简单地使用use 即可
Class
完成工作:

final Gson gson = new GsonBuilder()    .registerTypeAdapter(ImmutableList.class, myJsonDeserializer)    .create();


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/453315.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号