Zum Inhalt springen

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

By continuing to use the site, you agree to the use of cookies. more information

The cookie settings on this website are set to "allow cookies" to give you the best browsing experience possible. If you continue to use this website without changing your cookie settings or you click "Accept" below then you are consenting to this.

Close