2012-11-07 76 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