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);
