簡體   English   中英

在JAVA中使用GSON序列化內部類

[英]Serialize inner class with GSON in JAVA

我想序列化一個包含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"]}

問題在於結果不包含內部類的序列化。

我怎么解決這個問題?

非常感謝您的幫助!

您在A內沒有類型B的字段,因此沒有要序列化的內容。

您需要類似...

public class A {
    ...
    private B b;
    ...
    public A() {
        b = new B();
        b.b = "Some String";
    }
    ...
}

這是合適的鏈接 它定義了執行此操作的方法,但建議將內部類設置為靜態。

由於您的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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM