Artikelformat

Gson – google json library (Teil 1)

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

Schreibe einen Kommentar

Pflichtfelder sind mit * markiert.