2012-11-07 34 views
5

Sử dụng GSON làm cách nào để thêm tên lớp của Danh sách vào chuỗi json đã xuất của tôi? Tôi đã xem qua các api và đã bỏ lỡ bất kỳ tài liệu tham khảo để làm điều này. Tôi đang sử dụng GsonBuilder trong mã thực của mình nhưng cũng không thấy bất kỳ tùy chọn nào cho nó.gson - bao gồm tên lớp khi tuần tự hóa 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); 
    } 
} 

Điều này cho phép đầu ra sau đây:

json = [{ "tên": "Alice"}, { "tên": "Bob"}]

thế nào sao tôi đạt được kết quả sau? hoặc tương tự.

json = { "người": [{ "tên": "Alice"}, { "tên": "Bob"}]}

hoặc

json = [{"người": {"tên": "Alice"}}, {"người": {"tên": "Bob"}}]

Hy vọng đó là điều nhỏ nhặt mà tôi vừa bỏ lỡ. Cảm ơn trước.

+1

Giải pháp đơn giản nhất có thể tạo ra một số lớp khác, trong đó sẽ chứa một số biến (hoặc danh sách của loại người) với tên "người". – Serhiy

+0

Câu hỏi này đề cập đến cùng một vấn đề như http://stackoverflow.com/questions/4623329/gson-serialize-pojo-with-root-value-included và câu trả lời được chấp nhận cũng khá giống nhau. – user905686

Trả lời

5

Tôi không biết nếu câu trả lời là vẫn còn thú vị bạn nhưng những gì bạn có thể làm như sau:

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

Đây chính xác là những gì tôi đang tìm kiếm cảm ơn. – feargal

Các vấn đề liên quan