Gson / Libgdx Json:扩展ArrayList的Serialize类

时间:2016-02-03 06:19:23

标签: java list serialization libgdx gson

我试图序列化继承自ArrayList的类A.

class A<T> extends ArrayList<T>{
    // some stuff ...
}

这很好用。输出是列表元素的简单数组。但是,如果我向A类添加字段,则不会将其序列化:

class A<T> extends ArrayList<T>{
    String text = "text";
}

导致与上面的类相同的json输出 - 字符串不会出现。我用gson和libgdx json序列化器尝试了这个,它们都以相同的方式工作。如何序列化类字段和列表元素?

( 作为一种解决方法,我将列表存储为A:

中的字段
class A<T>{
    ArrayList<T> list;
    String key;
}

但这不是一个优雅的解决方案,因为我必须自己在A中实现所有列表方法(如.add(),. get(),...)。 )

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

在解析时尝试这样做:

Type type = new TypeToken<A<WhateverTypeOfArrayListYouWant>>(){}.getType();
gson.fromJson(string, type);

编辑: 还有你的序列化问题:

@Override
private void writeObject(java.io.ObjectOutputStream s)
    throws java.io.IOException{
    super.writeObject(s);
    s.writeInt(yourInt);
    s.writeLong(yourLong);
}

@Override
private void readObject(java.io.ObjectInputStream s)
    throws java.io.IOException, ClassNotFoundException {
    super.readObject(s);
    yourInt= s.readInt();
    yourLong= s.readLong();

}