Hilfe:JSON
JSON (JavaScript Object Notation) ist ein Format zur Hinterlegung strukturierter Daten, auch in Wiki-Seiten.
JSON im Wiki
[Bearbeiten | Quelltext bearbeiten]Wiki-Seiten:
- Das Seiten-Inhaltsmodell ist allgemein:
json - Daneben gibt es noch spezialisierte Untertypen: *.JsonConfig
- Seitennamen sollten auf
.jsonenden. - In der Seitenansicht werden Tabellen für die Zuweisungen Name→Wert dargestellt.
- Bearbeitung mit CodeMirror hebt die Syntax hervor.
- Dessen Lint-Modus zeigt Syntaxfehler an
- Bei jeder betroffenen Zeile _ mit Problembeschreibung
- Für die gesamte Seite mit Statistik; sollte 0-0-0 sein.
Für syntaxhighlight ist lang="json" anzugeben.
Verarbeitende Software – JSON kann beliebig ausgetauscht und gemeinschaftlich genutzt werden von:
- Lua
- mw.loadJsonData() – Wiki-Seiten einlesen
- mw.text – Parsen und serialisieren
- JavaScript
- PHP (Wiki-Server)
Erforderlichenfalls kann durch Software auch eine interne Repräsentation in den austauschbaren JSON-Text („Serialisierung“) geschrieben werden.
- Externe Werkzeuge können große Datenbestände konvertieren; über Schnittstellen auch aus Datenbanken exportieren.
Anwendungsbereiche:
- Systemnachrichten zur Konfiguration der deutschsprachigen Wikipedia
Beispiel: MediaWiki:BlockedExternalDomains.json - TemplateData
- Vorlagenkonfiguration
Beispiele: - Globale Daten auf Commons als
Data: - Konfiguration von Gadgets und Benutzerskripten
- Hinterlegung erweiterter Cookies (Web Storage); insbesondere aber als Indexed Database API (mit weiteren Datentypen).
- Aggregation vieler (etwa grafischer) Einzeldaten:
- Hilfe:chart
- Hilfe:Kartographer
- „Metadaten“ – sehr viele strukturierte Einzelinformationen
Früher wurden proprietäre Formate verwendet, also jeweils eine individuelle Syntax wie:
Mit JSON kann die Formatierung einheitlich in eine interne Struktur überführt werden. Ob diese Struktur dann zulässig wäre, kann anschließend geklärt werden; die Quelltextnotation (Parsing) wird durch Bibliotheksfunktionen abgedeckt.
Grundkurs JSON
[Bearbeiten | Quelltext bearbeiten]Das Grundprinzip besteht darin, dass eine interne Datenstruktur durch einen Quelltext repräsentiert wird („Serialisierung“), und der Quelltext wieder in eine Datenstruktur transformiert werden kann („Parsing“). Der Quelltext kann in einer Wiki-Seite hinterlegt werden.
Syntax einer Zuweisung:
"Name": Wert
- Einem Bezeichner Name wird ein Wert zugewiesen.
- Mehrere Zuweisungen werden durch Komma
,getrennt. - Ein Bezeichner kann innerhalb desselben (Teil-)Objekts nur genau einmal auftreten.
- Der Block wird in
{und}eingeschlossen. - Whitespace (Leerzeichen, Zeilenumbruch, notfalls Tabulator) in ASCII kann die Elemente beliebig umgeben.
Grundsätzlich entspricht das JSON-Objekt auch einem JavaScript-Objekt, mit einer fundamentalen Ausnahme:
- JSON darf niemals eine Funktionsdefinition enthalten.
- Damit kann sicher ausgeschlossen werden, dass das Objekt allein eine schädliche Funktion ausführt, von sich aus irgendwie irgendetwas bewirkt. Nur manipulierte Inhalte könnten problematisch sein.
Es gibt fünf Datentypen, drei atomare und zwei aggregierte:
- Zeichenkette, in
"eingeschlossen und darf keinen Zeilenumbruch enthalten. - Zahl
- Boolesch
- Array mit null bis beliebig vielen Werten beliebigen Typs
- JSON-Objekt
{ "Zeichenkette": "nur einzeilig",
"Zeichenkette Unicode": "Tatütata",
"Zeichenkette Tüddelchen": "quote\"mark",
"Zeichenkette Zeilenumbruch": "Zeile\nZeile",
"Zeichenkette Backslash": "Back\\slash",
"Zeichenkette Hexcode": "Tat\u00FCtata",
"GanzeZahl": 42,
"DezimalZahl": -3.14159265,
"ExponentialZahl": 5.9722E24,
"Falsch": false,
"Wahr": true,
"Array": [ 0, 1, 1, 2, 3, 5, 8, 13 ],
"Objekt Nix": null,
"Objekt Leer": { },
"Objekt Geschachtelt": { "Schachtelung1": "Wert1",
"Schachtelung2": "Wert2"
}
}
Jedes JSON-Objekt kann immer direkt in eine JavaScript-Programmierung eingefügt werden.
- Umgekehrt wäre zu beachten, dass der Name des Elements in
"eingeschlossen werden muss, was in JavaScript ggf. nicht zwingend erforderlich ist, und dass'kein alternativer Zeichenketten-Begrenzer ist. - Striktes JSON erlaubt keine Hexadezimal-Zahl:
0x07AA - Kommentare sind nicht erlaubt. Sie müssten in Pseudo-Wertzuweisungen untergebracht werden.
Hilfsmittel
[Bearbeiten | Quelltext bearbeiten]- jsonlint.com – JSON Validator
- codebeautify.org – JSON Validator und Formatierer; Browser, Minimierer und XML-Konvertierer
- jsonDebug@PerfektesChaos – Benutzerskript zum Auffinden von Fehlern zu JSON-Code innerhalb einer Wikitext-Seite.
