2012-11-07 16 views
5

GSON'u kullanma Listemin sınıf adını çıktılandırılmış json dizilimime nasıl eklerim? api'u inceledim ve bunu yapmak için herhangi bir referansı kaçırdım. Gerçek kodumda GsonBuilder kullanıyorum ancak bunun için herhangi bir seçenek görmüyorum.gson - java pojo serileştirirken sınıf adını girin -> 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); 
    } 
} 

Bu aşağıdaki çıktıyı verir:

json = [{ "name": "Alice"}, { "name": "Bob"}]

nasıl Aşağıdaki çıktıyı elde edebilir miyim? veya benzeri bir şey.

json = { "kişi": [{ "ad": "Alice"}, { "adı,": "Bob"}]}

veya

json = [{ "kişi": { "name": "Alice"}}, { "kişi": { "name": "Bob"}}]

ben sadece kaçırmış olduğu önemsiz bir şey umut. Şimdiden teşekkürler.

+1

basit çözüm bazı değişkeni içerecektir başka sınıfın oluşturulması, (ya da liste olabilir "kişi" adıyla) – Serhiy

+0

Bu soru, http://stackoverflow.com/questions/4623329/gson-serialize-pojo-with-root-value-included ile aynı sorunu ele alır ve kabul edilen yanıt da aynı şekilde geçerlidir. – user905686

cevap

5

Cevabın hala ilginç olup olmadığını bilmek ama ne yapabilirim şudur yoktur:

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

Tam olarak aradığım şey teşekkürler. – feargal