【发布时间】:2016-04-19 16:38:06
【问题描述】:
我想使用 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()<>;
}
【问题讨论】:
-
在他的情况下他可以直接指定类型,因为他只想像
toJSON(src, type)一样转换对象src。但在我的例子中,对象data没有ArrayList类型,而是Data。 -
阅读 GsonBuilder 上的 api。 registerTypeAdapter 方法似乎很有希望
标签: java json generics serialization gson