用于对象中一个变量的Gson自定义脱盐器

用于对象中一个变量的Gson自定义脱盐器,第1张

用于对象中一个变量的Gson自定义脱盐器

您需要为该

Apple
类型注册一个自定义类型适配器。在类型适配器中,您将添加逻辑以确定是否为您提供了数组或单个对象。使用该信息,您可以创建
Apple
对象。

除以下代码外,请修改您的Apple模型对象,以使该

seeds
字段不会自动解析。将变量声明更改为:

private List<Seed> seeds_funkyName;

这是代码:

GsonBuilder b = new GsonBuilder();b.registerTypeAdapter(Apple.class, new JsonDeserializer<Apple>() {    @Override    public Apple deserialize(JsonElement arg0, Type arg1,        JsonDeserializationContext arg2) throws JsonParseException {        JsonObject appleObj = arg0.getAsJsonObject();        Gson g = new Gson();        // Construct an apple (this shouldn't try to parse the seeds stuff        Apple a = g.fromJson(arg0, Apple.class);        List<Seed> seeds = null;        // Check to see if we were given a list or a single seed        if (appleObj.get("seeds").isJsonArray()) { // if it's a list, just parse that from the JSON seeds = g.fromJson(appleObj.get("seeds"),         new TypeToken<List<Seed>>() {         }.getType());        } else { // otherwise, parse the single seed, // and add it to the list Seed single = g.fromJson(appleObj.get("seeds"), Seed.class); seeds = new ArrayList<Seed>(); seeds.add(single);        }        // set the correct seed list        a.setSeeds(seeds);        return a;    }});

有关更多信息,请参阅Gson指南。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5091697.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-16
下一篇 2022-11-16

发表评论

登录后才能评论

评论列表(0条)

保存