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

Gson多态序列化

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

Gson多态序列化

看起来您发现了JsonSerializer文档警告的无限循环:

但是,永远不要在src对象本身上调用它,因为这将导致无限循环(Gson将再次调用您的回调方法)。

我想到的最简单的方法是创建一个 安装处理程序的新Gson实例,然后通过该实例运行您的实例。

最后,您可以序列化

List<Behavior>
代替代码:

public class BehaviorListAdapter implements JsonSerializer<List<Behavior>> {    private static final String CLASSNAME = "CLASSNAME";    private static final String INSTANCE = "INSTANCE";    @Override    public JsonElement serialize(List<Behavior> src, Type typeOfSrc, JsonSerializationContext context) {        JsonArray array = new JsonArray();        for (Behavior behavior : src) { JsonObject behaviorJson = new JsonObject(); String className = behavior.getClass().getCanonicalName(); behaviorJson.addProperty(CLASSNAME, className); JsonElement elem = context.serialize(behavior); behaviorJson.add(INSTANCE, elem); array.add(behaviorJson);        }        return array;    }}GsonBuilder builder = new GsonBuilder();// use a TypeToken to make a Type instance for a parameterized typebuilder.registerTypeAdapter(    (new TypeToken<List<Behavior>>() {}).getType(),    new BehaviorListAdapter());gson = builder.create();


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

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

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