2

我想用 GSON 序列化一个包含内部类的类。我已经检查过内部类是静态的很重要。我已将其设为静态,但我的代码并未对其进行序列化。

我要序列化的类:

public class A{

    static class B{
        public String b; 

        public B() {}
    }

    private int data1 = 100;
    private String data2 = "hello";
    private List<String> list = new ArrayList<String>() {
      {
        add("String 1");
        add("String 2");
        add("String 3");
      }
    };

    public A(){

    }
}

进行序列化的代码:

public class json 
{

    public static void main(String args[])
    {
        try
        {
            Gson gson = new Gson();
            A a = new A();
            String j = gson.toJson(t);

            System.out.println(j);
    }
}

结果:

{"data1":100,"data2":"hello","list":["String 1","String 2","String 3"]}

问题是结果不包含内部类序列化。

我怎么解决这个问题?

非常感谢您的帮助!

4

3 回答 3

4

B里面没有类型的字段,A所以没有什么可以序列化的。

你需要类似...

public class A {
    ...
    private B b;
    ...
    public A() {
        b = new B();
        b.b = "Some String";
    }
    ...
}
于 2013-07-16T18:55:03.217 回答
1

这是合适的链接。它定义了执行此操作的方法,但建议将内部类设为静态。

于 2016-07-15T05:21:59.797 回答
1

由于您的 B 类没有任何值,因此它不会被序列化。要序列化,

您可以使用以下命令配置 gson 构建器:

 GsonBuilder gsonBuilder = new GsonBuilder().serializeNulls();
 Gson gson=gsonBuilder.create();
 gson.toJson(a);

这是链接: https ://github.com/google/gson/blob/master/UserGuide.md#null-object-support

于 2016-09-21T10:53:28.093 回答