2012-11-07 9 views
5

Utilizzando GSON come faccio a aggiungere il nome della classe della mia lista per la mia stringa JSON in uscita? Ho esaminato lo api e ho perso qualsiasi riferimento per farlo. Sto usando GsonBuilder nel mio codice reale ma non vedo nessuna opzione per questo.GSON - includere il nome della classe durante la serializzazione 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); 
    } 
} 

Questo dà il seguente risultato:

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

Come ottengo il seguente risultato? o qualcosa di simile.

JSON = { "persona": [{ "name": "Alice"}, { "name": "Bob"}]}

o

JSON = [{"persona": {"nome": "Alice"}}, {"persona": {"nome": "Bob"}}]

Spero che sia qualcosa di banale che ho appena perso. Grazie in anticipo.

+1

La soluzione più semplice potrebbe essere la creazione di qualche altra classe, che dovrebbe contenere una variabile (o la lista di tipo persona) con il nome "persona". – Serhiy

+0

indirizzi questa domanda abbastanza lo stesso problema di http://stackoverflow.com/questions/4623329/gson-serialize-pojo-with-root-value-included e la risposta accettata è anche abbastanza lo stesso. – user905686

risposta

5

non so se la risposta è ancora interessante, ma cosa si può fare è la seguente:

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

Questo è esattamente quello che stavo cercando grazie. – feargal

Problemi correlati