JSON-
Erweiterung | .json |
---|---|
Mime Typ | application/json |
PUID | fmt / 817 |
Entwickelt von | Douglas Crockford |
Erste Version | 2002 |
Formattyp | Text |
Beyogen auf | Javascript |
Standard | RFC-8259 und ECMA-404 |
Spezifikation | Offenes Format |
Webseite | json.org/json-fr.html |
JavaScript Object Notation (JSON) ist einTextdatenformat aus der abgeleitetenObjektNotation vonderJavaScriptSprache. Sie können strukturierte Informationen so darstellen, wie esbeispielsweiseXML zulässt. VonDouglas Crockfordzwischen 2002 und 2005 erstellt. Der erste Standard JSON ist ECMA-404, der im Oktober 2003 veröffentlicht wurde. Er wird derzeit durch die beiden konkurrierenden StandardsRFC 8259 von derIETFund ECMA 404 derECMA beschrieben.
Die neueste Version der Formatspezifikationen ist Dezember 2017.
Bibliotheken für das JSON-Format sind in den meisten Programmiersprachen vorhanden.
Ein JSON-Dokument besteht aus zwei Arten von Strukturelementen:
Dieselben Elemente repräsentieren drei Arten von Daten:
Beispiel für Daten im JSON-Format:
{ "menu": { "id": "file", "value": "File", "popup": { "menuitem": [ { "value": "New", "onclick": "CreateNewDoc()" }, { "value": "Open", "onclick": "OpenDoc()" }, { "value": "Close", "onclick": "CloseDoc()" } ] } } }Entspricht dem XML- Format :
<menu id="file" value="File"> <popup> <menuitem value="New" onclick="CreateNewDoc()"/> <menuitem value="Open" onclick="OpenDoc()"/> <menuitem value="Close" onclick="CloseDoc()"/> </popup> </menu>Entspricht dem YAML- Format :
menu: id: file value: File popup: menuitem: - value: New onclick: CreateNewDoc() - value: Open onclick: OpenDoc() - value: Close onclick: CloseDoc()Die sechs Grundtypen des JSON-Formats sind:
Per Definition ist JSON ein Datenaustauschformat . Daher lässt der RFC keine Kommentare zu (die von Natur aus Metadaten ( Metadaten) sind ). Die Parser JSON streng eine generieren Ausnahme , wenn sie ein unerwartetes Zeichen durch die Spezifikation (als erfüllen /von //oder /*gerade erst anfangen JavaScript Kommentare).
Es gibt Formatinitiativen, die JSON überladen, um das Hinzufügen von Kommentaren zu ermöglichen (z. B. Hjson für Human JSON auf Englisch), und Software, die es ermöglicht, JSON aus diesen abgeleiteten Formaten in einem reinen und strengen Format zu rendern. Da diese Dateien dann jedoch einen zusätzlichen Schritt erfordern, bevor sie von einem Standard-JSON-Interpreter gelesen werden können, verlieren sie leicht ihre Interoperabilität .
Wir können jederzeit eine Eigenschaft des vom JSON dargestellten Objekts hinzufügen, es "_comment" (eine erweiterte Verwendung) nennen und einen Text (den Kommentar) in das Wertefeld einfügen:
{ "_comment": "Imported from Wikidata 2015-05-27 10:13.", "QID": "Q5502001", "label": "Adèle", "description": "late 18th century, early 19th century French brig" }Während der Entwicklung des Formats bemerkte David Crockford, dass einige der frühen Benutzer von JSON Kommentare hinzufügten, um dem Parser Anweisungen wie Anweisungen #ifdefoder #defineden C-Präprozessor zu geben . Er sieht sie als Gefahr für die Interoperabilität, eine Priorität des Formats, und beschließt, sie zurückzuziehen. 2012 erklärte er seine Wahl und gab zu, sich der Traurigkeit der Benutzer bewusst zu sein, diese Dateien nicht kommentieren zu können.
Diese Datentypen sind so allgemein und abstrakt, dass sie einerseits in jeder Programmiersprache und andererseits konkrete Daten darstellen können.
Der Hauptvorteil von JSON besteht darin, dass es von einem Entwickler einfach implementiert werden kann, während es dennoch umfassend ist.
Leistungen :
JSON kann nur einige allgemeine Typen darstellen, und es ist nicht möglich, weitere hinzuzufügen. Für Datumsangaben oder Farben müssen wir beispielsweise Darstellungen in Form von Zeichenketten finden. Dies ist der Hauptunterschied zu einer Sprache wie XML , in der Daten auf Kosten einer höheren Komplexität typisiert und erweiterbar sind.
Diese schwache Eingabe schwächt die Sicherheit und Zuverlässigkeit der Sprache; Beispielsweise gibt es keine feste Grenze für ganzzahlige Werte, dies hängt vom Interpreter ab.
Aus praktischer Sicht kann es keine Kommentare geben, was bei der Verwendung von JSON-Dateien in einer Konfiguration ärgerlich ist. Einige Bibliotheken akzeptieren Kommentare im JavaScript-Format.
[nicht neutral]Obwohl JSON die JavaScript- Notation verwendet , ist es unabhängig von der Programmiersprache (mehrere Dutzend Programmiersprachen haben JSON integriert). JSON wird verwendet, um Anwendungen in einer heterogenen Umgebung zu kommunizieren. Es wird insbesondere von AJAX und Webdiensten als Datentransportsprache verwendet . Andere Lösungen wie XML sind möglich . Der MIME- Typ application / json wird verwendet, um ihn über das HTTP- Protokoll zu übertragen .
In Bezug auf JavaScript repräsentiert ein JSON-Dokument ein Objekt, daher sein Name. Es ist daher möglicherweise einfacher zu interpretieren als XML, was die Verwendung von Techniken erfordert, die häufig schwerer sind als der direkte Zugriff, wie z. B. das hierarchische Durchlaufen des DOM- Baums, der durch das gesamte Dokument dargestellt wird.
Es kann auch verwendet werden für:
In JavaScript ist es einfach, einen JSON-Ausdruck auszuwerten, um ihn in ein natives Objekt umzuwandeln:
var donnees = eval('('+donnees_json+')');Diese Methode donnees_jsonbirgt jedoch Risiken, da die Zeichenfolge beliebigen JavaScript- Code enthalten kann . Es gibt eine sicherere Methode, die darin besteht, die Syntax der Zeichenfolge zu analysieren. Dies donnees_jsonist die einzige Lösung, die in anderen Programmiersprachen verfügbar ist, mit Ausnahme von Python , der Syntax von JSON, die den beiden Haupttypen entspricht: Listen und Wörterbücher.
Ab 2009 haben Browser begonnen, native Unterstützung für das JSON-Format zu integrieren. Dies erleichtert die Handhabung, die Sicherheit (gegen die Bewertung von in einer JSON-Zeichenfolge enthaltenen schädlichen Skripten) und die Verarbeitungsgeschwindigkeit. Daher integrieren die Browser Firefox 3.5, IE 8 oder Opera 10.5 sie nativ.
Das Auswerten eines JSON-Ausdrucks in JavaScript zur Umwandlung in ein Objekt erfolgt dann wie folgt:
var donnees = JSON.parse(donnees_json);Verschiedene Javascript- Bibliotheken unterstützen ältere Browser mit ähnlicher Syntax.
JSONP oder JSON-P (für JSON mit Auffüllung auf Französisch "JSON avec formage") ist eine Erweiterung, in der der Name der Rückgabefunktion angegeben ist. Die ursprüngliche Idee stammt aus dem Blog von Bob Ippolito im Jahr 2005 und ist jetzt in Web 2.0- Anwendungen wie dem Google-Toolkit für Anwendungen beliebt . Es sind Verbesserungen geplant, um Argumente hinzuzufügen.
JSONP verwendet Skript-Tags, Aufrufe sind offen. Daher ist JSONP möglicherweise nicht für den Transport vertraulicher Informationen geeignet.
JSON5 ist eine Erweiterung der JSON-Syntax, mit der die Einschränkungen der JSON-Syntax umgangen werden sollen.
SpezifikationenHJSON ist eine Erweiterung der JSON-Syntax und dient demselben Zweck wie JSON5 (siehe oben).
Spezifikationen