Zum Inhalt

Formatierte JSON Konfiguration in Python

JSON (JavaScript Object Notation) eignet sich auch in Python wunderbar um Daten strukturiert zu speichern oder zu übertragen. Eine Formatierte JSON Konfiguration in Python ist menschen-lesbar, lässt sich schnell laden, speichern und bei serverseitigen Anwendungen, auch schnell zum Client und zurück senden. Die JSON Library ist fester Bestandteil von Python und leicht einzusetzen. Allerdings müssen ein paar Besonderheiten beachtet werden.

Die offizielle Dokumentation zeigt kurz und knapp die Funktionsweise der JSON-Bibliothek in Python. Formatiert ist eine JSON-Datei ebenso wie eine *.INI gut lesbar und ist somit auch für manuelle Änderungen geeignet. Im Gegensatz zu einer *.INI lassen sich jedoch auch Objekte abbilden. Wie einzelne Daten-Typen übersetzt werden ist der Dokumentation zu entnehmen.

JSON als Konfigurations-Datei in Python

Nachfolgend eine Beispiel-Klasse welche eine Formatierte JSON Konfiguration in Python laden und speichern kann. Die Sortierung der Datenstruktur sowie die Formatierung bleibt dabei erhalten. Somit bleibt die Datei lesbar.

Die Sortierung der Datenstruktur beibehalten

Per Voreinstellung wird die Sortierung der Daten bereits beim Laden verworfen. Beim Speichern wird dann auch auf die Formatierung verzichtet. Soll die JSON-Datei jedoch menschen-lesbar bleiben, etwa für manuelle Änderungen, kann dieses Verhalten wie im Beispiel oben korrigiert werden.

In der ersten Zeile erfolgt der Import from collections import OrderedDict. OrderedDict wird in Zeile 25 in der Methode json.load() dem Argument object_pairs_hook übergeben. Dies bewirkt dass die Sortierung der Elemente beibehalten wird. Um die Formatierung beim speichern zu erhalten, wird in Zeile 40 mit indent = 4 die Methode json.dump() angewiesen, ein Einrücken mit 4 Leerschlägen vorzunehmen. Damit bleibt die Datenstruktur und Formatierung der JSON Konfigurations-Datei erhalten.

Eine alphabetische Sortierung der Keywords beim Speichern wäre ebenfalls möglich, dazu müsste das Argument sort_keys mit dem Wert  True übergeben werden.

Sonderzeichen beim Speichern der JSON-Datei beibehalten

Im oben genannten Beispiel wird in Zeile 39 mit dem Argument ensure_ascii = False bewirkt dass auch Sonderzeichen wie zB. Umlaute erhalten bleiben. Ansonsten werden diese von automatisch Maskiert.

Veröffentlicht inLösungenTipp's

Neueste Beiträge

Themen: