JSON-Dateien aufhübschen

Mi, 9. Dezember 2020, Ralf Hersel

Die JavaScript Object Notation (JSON) ist ein kompaktes Datenformat in einer einfach lesbaren Textform und dient dem Zweck des Datenaustausches zwischen Anwendungen. JSON ist von der Programmiersprache unabhängig. Parser und Generatoren existieren in allen verbreiteten Sprachen. Das Schöne an JSON ist, dass es (im Gegensatz zu XML) auf überflüssige Auszeichnungen verzichtet und somit viel lesbarer ist. JSON besteht aus zwei Strukturelementen, die sich schachteln lassen: Name/Wert-Paare und Listen. Eine Voraussetzung für die gute Lesbarkeit ist die korrekte Formatierung der Daten. Daran mangelt es oft, wie man in diesem Beispiel sehen kann:

{"markers":[{"name":"RixosThePalmDubai","location":
[25.1212,55.1535],},{"name":"Shangri-LaHotel",
"location":[25.2084,55.2719]},{"name":"GrandHyatt","location"
:[25.2285,55.3273]}]}

Empfängt man JSON-Dateien z.B. von einem Web-Service, fehlt die Formatierung in den meisten Fällen. Wie man an dem Beispiel erahnen kann, ist es nicht einfach die Struktur der Daten zu verstehen. Dies ist jedoch notwendig, um die Daten in einem Programm verarbeiten zu können. Dieselbe Datei sieht viel klarer aus, wenn sie gut formatiert ist:

{
"markers": [
{
"name": "Rixos The Palm Dubai",
"location": [25.1212, 55.1535],
},
{
"name": "Shangri-La Hotel",
"location": [25.2084, 55.2719]
},
{
"name": "Grand Hyatt",
"location": [25.2285, 55.3273]
}
]
}

Nun ist die Struktur aus Name/Wert-Paaren und Listen sofort erkennbar und es fällt viel einfacher, diese Daten programmatisch einzulesen.

Viele Editoren und Programmierumgebungen (IDE) bieten Plug-ins, um JSON-Dateien menschenlesbar aufzubereiten. In der Regel heissen diese Plug-ins 'Pretty JSON' oder ähnlich. Wer jedoch keine Lust hat, solche Plug-ins oder andere Tools zu installieren, kommt auch mit Bordmitteln weiter. Dieser Befehl funktioniert auf jedem GNU/Linux-Rechner ohne etwas installieren zu müssen:

python3 -m json.tool ugly.json pretty.json

Die Datei 'ugly.json' enthält den unformatierten Inhalt während in 'pretty.json' anschliessend der wohl formatierte Inhalt steht. Der Befehl macht nichts anderes, als die CLI-Variante des Python-Moduls 'json' aufzurufen.