我想使用 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/