2012-10-23 16 views
25

Non riesco a trovare un modo semplice per aggiungere un campo personalizzato durante la serializzazione in Gson e speravo che qualcun altro potesse essere in grado di aiutare.Gson aggiunge campo durante la serializzazione

Ecco una classe di esempio per mostrare il mio problema:

public class A { 
    String id; 
    String name; 
    ... 
} 

Quando ho serializzare classe IA vorrebbe tornare qualcosa di simile:

{ "id":"123", "name":"John Doe", "url_to_user":"http://www.example.com/123" } 

dove url_to_user non è memorizzato nella mia istanza della classe A, ma può essere generato con dati nell'istanza della classe A.

C'è un modo semplice per farlo? Preferirei evitare di scrivere un intero serializzatore solo per aggiungere un campo.

risposta

44

Utilizzare Gson.toJsonTree per ottenere un JsonElement, con cui è possibile interagire in modo dinamico.

A a = getYourAInstanceHere(); 
Gson gson = new Gson(); 
JsonElement jsonElement = gson.toJsonTree(a); 
jsonElement.getAsJsonObject().addProperty("url_to_user", url); 
return gson.toJson(jsonElement); 
+0

Grazie. Abbastanza semplice e funziona per quello che sto facendo. – joncalhoun

+0

Semplice ... spererebbe che ci sarebbe un modo più semplice, ad es. un metodo sull'oggetto ... – Armand

Problemi correlati