JSON-Dateien - JavaScript Object Notation
JSON-Dateien wurden zum leichten Datenaustausch entwickelt. Die Dateien sind sowohl für Computer als auch für Menschen einfach lesbar. Das Dateiformat wurde ursprünglich für die Programmiersprache JavaScript entwickelt und ist Teil der internationalen Norm ECMA–262 (European Computer Manufacturers Association). JavaScript ist eine ursprünglich von Netscape, bzw. der Mozilla-Stiftung entwickelte Umsetzung der Norm ECMAScript.
PropEdit unterstützt die ursprüngliche, strenge Auslegung der ECMA-Norm, wie sie üblicherweise im Umfeld von macOS gilt und im Internet-Standard RFC 8259 definiert ist, aber zusätzlich unterstützt PropEdit auch die Erweiterung JSON5. Das heißt konkret:
- Wenn das oberste Objekt in einer JSON-Datei eine Liste (Array) oder ein Objekt in Form einer Zuordnungstabelle (Dictionary) ist, dürfen die Begrenzungszeichen (geschweifte oder eckige Klammern) nicht weggelassen werden.
- JSON-Fragmente sind gestattet. Es ist erlaubt, dass eine Datei nur einen einzelnen skalaren Wert enthält.
- Als Werte in einer JSON-Datei sind neben Listen und Dictionaries nur Zeichenketten oder Zahlen erlaubt, außerdem die Logikwerte true (wahr/ja), false (falsch/nein) und der spezielle Wert null.
- Als Schlüssel für Dictionaries sind nur Zeichenketten erlaubt.
- Die Verwendung der Standarderweiterung JSON5 ist gestattet. Dies schließt ein:
- Als Begrenzer für Zeichenketten dürfen einfache oder doppelte Anführungszeichen verwendet werden.
- Bei Schlüsseln in Dictionaries ist es erlaubt, die Anführungszeichen wegzulassen, solange ein Schlüssel kein reserviertes Wort des ECMAscript-Standards darstellt.
- Am Ende eines Arrays oder Dictionaries ist ein „nachhängendes“ Komma erlaubt, ohne dass ein Wert folgt.
- Zeichenketten dürfen mit einem Backslash am Zeilenende mehrere Zeilen überspannen.
- Die Schreibweise \xdd ist erlaubt, um lateinische Schriftzeichen mit einem Code zwischen 0 und 255 (gemäß Unicode) über zwei hexadezimale Ziffern anzugeben.
- Kommentare im C-Stil mit // oder /* … */ sind erlaubt.
- Hexadezimale Zahlendarstellung mit der Schreibweise 0x, führende Dezimalpunkte und Nullen, sowie ein ausdrückliches Pluszeichen für positive Zahlen sind zulässig.
- Die speziellen Werte NaN (not a number), Infinity (positive Unendlichkeit) und -Infinity (negative Unendlichkeit) dürfen verwendet werden.
Leicht lesbare oder kompakte Darstellung
Es ist üblich, JSON-Dateien mithilfe von Leerzeichen und einzelnen Zeilen zu untergliedern, so dass ein Mensch die Daten gut lesen kann. So werden Elemente aus Arrays und Dictionaries jeweils übersichtlich zeilenweise aufgeführt, verschachtelte Objekte werden oft eingerückt geschrieben.
Für einen Computer ist eine übersichtliche Darstellung nicht nötig. Hier kommt es dagegen oft auf das Einsparen von Speicherplatz an. Es ist deshalb auch möglich, JSON-Dateien besonders kompakt anzulegen. Leerzeichen und einzelne Zeilen werden dann nur noch verwendet, wenn es unbedingt nötig ist.
PropEdit verwendet standardmäßig die leicht lesbare Darstellung. Ein kompaktes Speichern kann mithilfe der Funktion Exportieren erreicht werden.
Verträglichkeit von Eigenschaftslisten und JSON-Dateien
Dateien im plist- und im JSON-Format lassen sich beide als Eigenschaftslisten verwenden. In der Praxis können die beiden Typen meist sofort ineinander umgewandelt werden. Beachten Sie jedoch die folgenden Einschränkungen, die sich direkt aus den genannten Definitionen ergeben:
- Eine plist-Datei kann Werte des Typs null nicht speichern. Ein Nullwert muss auf andere Weise, z.B. über die Zahl 0 oder die Zeichenkette „null“ dargestellt werden.
- Eine JSON-Datei kann Werte des Typs Datum und Binärdaten nicht speichern.
Einschränkungen beim Schreiben von JSON-Daten
Wie bereits oben erwähnt, wird für gewöhnlich Weißraum, also Leerzeichen und eine Gliederung in Zeilen dazu verwendet, JSON-Daten lesbar zu halten. Auf welche Weise dies im Detail geschieht, ist nicht vorgeschrieben. Wenn Sie eine Datei laden, mit PropEdit ändern und dann wieder speichern, wird es in den meisten Fällen passieren, dass sich die interne Schreibweise der Datei ändert. Dies liegt in der Natur der Sache. Bitte beachten Sie die folgenden Einschränkungen und Vorgehensweisen, die sich daraus ergeben:
- Kommentare (nach JSON5-Standard) werden beim Speichern grundsätzlich entfernt.
- Hexadezimale Schreibweisen für ganze Zahlen werden in dezimale Schreibweise umgewandelt.
- Hexadezimale Schreibweisen für Unicode-Zeichen werden aufgelöst und durch lesbare Zeichen im UTF8-Standard ersetzt.
- Die Schreibweise und Genauigkeit von Gleitkommazahlen kann sich ändern. Sie unterliegt den üblichen technischen Einschränkungen der Norm IEEE 754.
- Beim Speichern in leicht lesbarer Darstellung wird die von macOS bevorzugte Form der Einrückung und Untergliederung in Zeilen nachgeahmt.
- Beim Speichern in kompakter Darstellung werden alle Leerzeichen und Zeilenenden entfernt, falls technisch zulässig.