gson for泛型列表,包含泛型元素列表

时间:2014-04-08 17:49:09

标签: java json list generics gson

我有一个自定义的泛型列表,它将包含一堆泛型元素。我正在尝试使用gson。以下是课程:

public class List<E> {
    private ListElement<E> head;
    private ListElement<E> tail;
    private elementCount;
}

public class ListElement<E> {
    E element;
    private ListElement<E> prev;
    private ListElement<E> next;
}

这些类就像这样使用

public class AAA {
    String x;
}

public class BBB extends AAA {
    String y;
}

public class CCC {
    String z;
    private List<BBB> listOfBBB;
}

当我为CCC调用“toJson”函数时,GSON进入无限循环并崩溃。我假设这是因为ListElement中的循环引用。此外,List和ListElement应以特定方式序列化(如下所述)。

我在这个网站上阅读了很多答案 - 关于自定义GSON序列化/反序列化的大量讨论。我还审查了GSON文档,类似的建议。但是,这个特殊情况没有涉及,或者至少我不知道如何解决这个问题。

所以我开始为List创建自定义序列化。理想情况下,List的GSON序列化应首先打印elementCount,然后遍历列表元素并仅序列化“元素”。头/尾不应该被序列化,因为它们仅在运行时具有意义。

但我不知道List级别的“E”类型。所以我想我会在ListElement中添加一个辅助函数。但是,即使在ListElement类中,我也不是元素的类型。

如何为这种情况创建自定义序列化程序?我是否只为我知道类型的类(即CCC或BBB)强制创建自定义序列化程序?有更简单的解决方案吗?

0 个答案:

没有答案