Gson使用嵌套的通用对象序列化/反序列化

时间:2019-01-31 11:58:56

标签: java generics gson

我已经提到了一些关于SO的问题,例如google gson fromjson() TypeTokenGson TypeToken with dynamic ArrayList item type,但无法找到确切用例的解决方案。

我的对象层次结构是这样的:

class A
{
    List<? extends Parent> files;
    A(List<? extends Parent> files){
        this.files = files;
    }
}


class B extends A
{
    B(List<Child> files){
        super(files);
    }


}

Interface Parent{}

class Child implements Parent{

}

我的tojson代码是:

A data = new B(files);

try(Writer writer = new FileWriter(outputFile)) 
{
    Gson gson = new GsonBuilder().setPrettyPrinting().create(); 
    gson.toJson(data,writer);
    writer.flush();
}

放入调试器,我发现已填充数据变量,但输出文件包含一个空列表。

在以上帖子中,我研究了一种可能的解决方案,即:

Type listType = new TypeToken<ArrayList<YourClass>>(){}.getType();

但我的问题是,我将此类型嵌套在另一个类中,即上述情况中的B。有什么方法可以使用TypeToken创建嵌套的Type?

0 个答案:

没有答案