2012-10-23 18 views
25

Nie mogę znaleźć prostego sposobu na dodanie niestandardowego pola podczas serializacji w Gsonie i miałem nadzieję, że ktoś inny będzie w stanie Ci pomóc.Gson dodać pole podczas serializacji

Oto klasa próbka pokazać mój problem:

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

Kiedy serializacji klasy AI chciałby powrócić coś takiego:

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

gdzie url_to_user nie jest przechowywany w moim instancji klasy A, ale można go wygenerować z danymi w instancji klasy A.

Czy istnieje prosty sposób na zrobienie tego? Wolałbym uniknąć pisania całego serializera tylko po to, aby dodać jedno pole.

Odpowiedz

44

Użyj Gson.toJsonTree, aby uzyskać JsonElement, za pomocą którego możesz dynamicznie wchodzić w interakcje.

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

Dzięki. Wystarczająco proste i działa na to, co robię. – joncalhoun

+0

Proste ... mam nadzieję, że będzie prostszy sposób, np. metoda na obiekcie ... – Armand

Powiązane problemy