有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

json在JAVA中使用GSON序列化内部类

我想用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(){

    }
}

构成seralization的代码:

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"]}

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

我怎样才能解决这个问题

非常感谢你的帮助


共 (3) 个答案

  1. # 2 楼答案

    A内没有类型为B的字段,因此没有可序列化的内容

    你需要像

    public class A {
        ...
        private B b;
        ...
        public A() {
            b = new B();
            b.b = "Some String";
        }
        ...
    }
    
  2. # 3 楼答案

    这是合适的link。它定义了实现这一点的方法,但建议将内部类设置为静态