Bei Rest-Services werden häufig die Daten im JSON-Format zurückgeliefert. Diese Daten möchte man auf leichte Art und Weise aus der JavaScript Notation in eine Objekt-Struktur der passenden Programmiersprache transferieren. Hier hilft die Google-Bibliothek GSON.
Bevor man mit der Serialisierung/Deserialisierung starten kann, muss man ein Gson-Objekt generieren. Die einfachste Möglichkeit hierfür ist:
Gson gson = new Gson();
Besser ist es jedoch den vorhandenen Builder zu benutzen, da man so das Gson-Objekt im Vorfeld etwas konfigurieren kann. Dadurch kann man die Ausgabe oder auch die Serialisierung/Deserialisierung beeinflussen.
Gson gson = new GsonBuilder().create(); // gson-object with pretty print output Gson gsonPretty = new GsonBuilder().setPrettyPrinting().create();
Um die Umwandlung durchzuführen benötigt man natürlich entsprechende Java-Klassen. Als Beispiel nehme man folgenden JSON-String:
{ "id": "file", "value": "File", "popup": { "menuitem": [ {"value": "New", "onclick": "CreateNewDoc()"}, {"value": "Open", "onclick": "OpenDoc()"}, {"value": "Close", "onclick": "CloseDoc()"} ] } }
Dazu kann man nun entsprechende Klassen implementieren. Der Einfachheit halber sind Getter und Setter nicht aufgelistet. Zum Beispiel:
class Menu { private String id; private String value; private Popup popup; } class Popup { private List<MenuItem> menuitem; } class MenuItem { private String value; private String onclick; }
Sobald der JSON-String und die Java-Klassen vorhanden sind, kann man mit dem zuvor erzeugten Gson-Objekt die Transformation durchführen.
String jsonString = "<jsonString>"; Menu menu = gson.fromJson(jsonString, Menu.class);
Jetzt kann das menu
-Objekt verwendet werden. Möchte man hingegen ein vorhandenes Model in einen JSON String serialisieren so geht dies ganz einfach mit:
Menu menu; String json = gson.toJson(menu);