Java JSON Decode – Tutorial

Posted: Dezember 4th, 2013 | Filed under: Java, Programmieren | Tags: , , , , | 9 Comments »

imageDa sich JSON aus meiner Sicht immer mehr gegenüber dem Klassiker XML durchsetzt und ich mittlerweile auch die Verwendung einer JSON-Datei gegenüber einer gängigen “Property-Datei” (*.ini) bevorzuge, hier ein kleines Tutorial mit Hilfe ihr von Googles JSON-Bibliothek gson Json-Dateien einlesen bzw. erzeugen könnt.

GSON Bibliothek herunterladen und einbinden

Zu allererst müsst ihr die Java-Bibliothek gson herunterladen: https://code.google.com/p/google-gson/downloads/list und entpacken. Für die Verwendung benötigt ihr lediglich die Datei gson-X.X.X.jar.

image

Falls ihr eclipse als IDE eurer Wahl verwendet, könnt ihr hier nachlesen wie ihr diese genau einbindet (unter dem Abschnitt  “Bibliothek ins Projekt importieren”).

JSON-Datei lesen

Als Beispiel verwende ich folgende, relativ simple JSON-Datei, welche dennoch alle wichtigen Strukturen wie Array oder Objekt beinhaltet.

personen.json

{
   "personen" : [
      {
         "name" : "Frank",
         "alter" : 27,
         "hobbys" : [
            {
               "name" : "Karlsruher SC"
            },
            {
               "name" : "Computer spielen"
            }
         ]
      },
      {
         "name" : "Peter",
         "alter" : 21,
         "hobbys" : [
            {
               "name" : "Tennis"
            },
            {
               "name" : "Boxen"
            }
         ]
      }
   ]
}

Prinzipiell kann man JSON-Dateien mit Hilfe zwei verschiedener Vorgehensweise auslesen. Entweder direkt über ein vorhandenes Java-Objekt, oder allgemein über das sogenannte JsonObject. In diesem Beispiel verwende ich den Weg über das JsonObject.

GsonExample.java

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStreamReader;
import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;

public class GsonExample {

    public static void main(String[] args) {
        Gson gson = new Gson();
       
        try {
            // Datei "personen.json" über einen Stream einlesen
            FileInputStream input = new FileInputStream("personen.json");
            BufferedReader reader = new BufferedReader(new InputStreamReader(input));
           
            // Datei als JSON-Objekt einlesen
            JsonObject json = gson.fromJson(reader, JsonObject.class);
           
            // Attribut "personen" als Array lesen
            JsonArray personen = json.getAsJsonArray("personen");

            for(int i = 0; i < personen.size(); i++){
                JsonObject person = personen.get(i).getAsJsonObject();
               
                // Attribute ausgeben z.B.: name, alter und hobbies
                System.out.println(person.get("name").getAsString());
                System.out.println(person.get("alter").getAsInt());
               
                // Attribut "hobbys" als Array lesen
                JsonArray hobbys = person.get("hobbys").getAsJsonArray();
           
                for(int k = 0; k < hobbys.size(); k++){
                    JsonObject hobby = hobbys.get(k).getAsJsonObject();
                   
                    // Name des Hobbys ausgeben
                    System.out.println(hobby.get("name").getAsString());
                }
                System.out.println("------");
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }
}

Konsolenausgabe

Frank
27
Karlsruher SC
Computer spielen
——
Peter
21
Tennis
Boxen
——

Ich hoffe ich konnte dem ein oder anderen damit helfen. Wie ihr ein vorhandenes Java-Objekt inklusive der vollständigen Daten-Struktur in eine JSON-Datei umwandelt und wieder einliest zeige ich euch das nächste mal.