java - 使用 GSON 序列化 ArrayList(通用类型)

标签 java json generics serialization gson

我想使用 Google 的 GSON 库将 java 对象序列化为 JSON。它工作正常,除非出现 ArrayList。 GSON 无法处理 ArrayList 的通用类型。 @Yavor Georgiev 描述了使用 registerSerializer(...) 方法的解决方案,但新版本中不存在此方法。

gson.registerSerializer(ArrayList.class, new CollectionSerializer<Object>());

http://hashtagfail.com/post/44606137082/mobile-services-android-serialization-gson

在我的例子中,ArrayList 嵌套在对象下的三层类中,传递给 toJSON(...)

有谁知道如何解决这个问题?

结构是这样的:

public class Data() {
    @Expose
    privat int number = 8;
    @Expose
    private Foo foo = new Foo();
}

public class Foo() {
    @Expose
    private Bar bar = new Bar();
}

import java.awt.Point;
public class Bar() {
    @Expose
    ArrayList<Point> list = new ArrayList()<>;
}

最佳答案

您是否尝试过注册适配器。

new GsonBuilder().registerTypeAdapter(Object.class, new JsonSerializer<Object>() {
            @Override
            public JsonElement serialize(Object src, Type typeOfSrc, JsonSerializationContext context) {
                return context.serialize(src);
            }
        })

关于java - 使用 GSON 序列化 ArrayList(通用类型),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36724413/

相关文章:

java - 在 jtopen 中设置 AS400 的设备名称

java - HTTPClient - 捕获所有重定向的列表

java - 在 selenium 中测试页面加载时间的正确方法?

javascript - 将 json 字符串转换为适合 esri.geometry.Multipoint 的字符串

java - 如何在java中使用引用自类型的抽象方法创建接口(interface)

java - 有没有更好的方法来实例化类中的通用字段?

java - 使用 Maven\issues with Nexus 调试 Grails 命令 "refresh-dependencies"

c - 使用 YAJL 在 C 中解析复杂的 JSON 子对象

java - 使用键名包含句点 (.) 的 gson 解析 JSON

java - 这里会发生类型删除吗?