2013-07-16 3 views
2

Я хочу сериализовать класс, который содержит внутренний класс с GSON. Я уже проверил, что важно, чтобы внутренний класс был статичным. Я сделал его статическим, но мой код не сериализует его.Сериализовать внутренний класс с помощью GSON в JAVA

Класс Я хочу сериализации:

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

Проблема заключается в том, что результат не содержат внутреннюю сериализацию класса.

Как я могу решить эту проблему?

Большое вам спасибо за помощь!

ответ

4

У вас нет поля типа B внутри A, поэтому сериализуется ничего.

Вы должны были бы что-то вроде ...

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

Это подходит link. Он определяет способ сделать это, но сделать внутренний класс статичным является рекомендуемым вариантом.

Смежные вопросы