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 に答える