2012-11-07 60 views
5

使用GSON如何將我的List的類名添加到我輸出的json字符串中?我查看了api,並且錯過了任何提及這樣做的內容。我在我的真實代碼中使用GsonBuilder,但沒有看到它的任何選項。gson - 在序列化java pojo時包含類名 - > json

public class Person { 
    String name; 

    public Person(String name){ 
    this.name = name; 
    } 

    public static void main(String [] args){ 
    Person one = new Person("Alice"); 
    Person two = new Person("Bob"); 

    List<Person> people = new ArrayList<Person>(); 
    people.add(one); 
    people.add(two); 

    String json = new Gson(people); 
    } 
} 

這給出以下輸出:

JSON = [{ 「名稱」: 「愛麗絲」},{ 「名稱」: 「鮑勃」}]

如何我是否達到以下輸出?或類似的東西。

JSON = { 「人」:[{ 「名稱」: 「愛麗絲」},{ 「名稱」: 「鮑勃」}]}

JSON = [{「person」:{「name」:「Alice」}},{「person」:{「name」:「Bob」}}]

希望我錯過了一些微不足道的小事。提前致謝。

+1

最簡單的解決辦法是創建一些其他類,其中會包含一些變量(或列表類型的人)與名字「人」。 – Serhiy

+0

這個問題解決了相同的問題,因爲http://stackoverflow.com/questions/4623329/gson-serialize-pojo-with-root-value-included 和接受的答案也非常相似。 – user905686

回答

5

我不知道如果答案仍然是有趣的你,但你可以做的是:

public static void main(String [] args){ 
    Person one = new Person("Alice"); 
    Person two = new Person("Bob"); 

    List<Person> people = new ArrayList<Person>(); 
    people.add(one); 
    people.add(two); 

    Gson gson = new Gson(); 
    JsonElement je = gson.toJsonTree(people); 
    JsonObject jo = new JsonObject(); 
    jo.add("person", je); 
    System.out.println(jo.toString()); //prints {"person":[{"name": "Alice"},{"name": "Bob"}]} 
} 
+0

這正是我要找的感謝。 – feargal