JSON
| JSON | ||
|---|---|---|
|
| ||
| https://json.org/ , https://json.org/json-fr.html und https://json.org/json-it.html | ||
| Allgemeine Information | ||
| Dateierweiterung |
.json | |
| Mime Typ |
application/json | |
| Formattyp | Auszeichnungssprache | |
| verlängert von | Javascript | |
| Norm(en) | STD 90 ( RFC 8259), ECMA-404 , ISO/IEC 21778:2017 | |
| offenes Format |
| |
JSON ( JavaScript Object Notation ) ist ein einfaches Textformat für den Datenaustausch. Es ist eine Teilmenge der JavaScript - Objektliteralnotation , obwohl es aufgrund seiner breiten Akzeptanz als Alternative zu XML als sprachunabhängiges Format gilt.
Einer der angeblichen Vorteile von JSON gegenüber XML als Datenaustauschformat ist, dass es viel einfacher ist, einen Parser dafür zu schreiben. In JavaScript kann ein JSON-Text einfach mit der Funktion geparst werden eval(), etwas, das (aufgrund der Allgegenwart von JavaScript in fast jedem Webbrowser ) maßgeblich zu seiner Akzeptanz durch die AJAX -Entwicklergemeinschaft beigetragen hat .
In der Praxis sind Argumente für die einfache Entwicklung von Parsern oder ihre Leistungsfähigkeit aufgrund der Sicherheitsprobleme, die durch die Verwendung eval()und den Aufstieg der in modernen Browsern integrierten nativen XML-Verarbeitung aufgeworfen werden, von geringer Relevanz. Aus diesem Grund wird JSON häufig in Umgebungen verwendet, in denen die Größe des Datenflusses zwischen Client und Server von größter Bedeutung ist (daher seine Verwendung durch Yahoo! , Google , Mozilla usw., die Millionen von Benutzern bedienen), wenn die Quelldaten explizit sind vertrauenswürdig und wo es nicht wichtig ist, dass Sie keine XSLT -Verarbeitung haben , um die Daten auf dem Client zu manipulieren.
Obwohl JSON eher als Alternative zu XML betrachtet wird, ist die Verwendung von JSON und XML in derselben Anwendung nicht ungewöhnlich . Daher muss eine Client-Anwendung, die Daten von Google Maps mit Wetterdaten in SOAP ( Simple Object Access Protocol ) integriert , beide Formate verwenden.
Im Dezember 2005 hat Yahoo! damit begonnen, optionale JSON-Unterstützung in einigen seiner Webdienste bereitzustellen . [ 1 ]
Name und Aussprache
Im Englischen wird JSON akronymisch ausgesprochen , wie der Name des Buchstabens J ( jay , /yéi/) gefolgt von der Silbe „son“. Das übliche Ergebnis mit der ersten betonten Silbe (/yéison/) wird genauso ausgesprochen wie der Name Jason, obwohl Douglas Crockford , Entwickler des JSON-Formats, die zweite Silbe als /yeisón/ betont. [ 2 ]
Denken Sie im Spanischen daran, dass JSON ein Akronym ist und dass es manchmal keine einheitliche Aussprache gibt. Gemäß der orthographischen Norm [ 3 ] wäre es normal, es als /jotasón/ auszusprechen. Einige sprechen es als /jason/ aus, aber es würde sich weiter von der Aussprache des Akronyms entfernen, indem ein weiterer Buchstabe hinzugefügt würde, der im Akronym (JASON) nicht vorhanden ist, und daher wäre es eine falsche Aussprache.
Einige, die keine Linguisten sind, bevorzugen es, das Akronym auf Spanisch auf Englisch auszusprechen, [ 4 ] aber das macht es nicht korrekter, sondern es wäre eher typisch für amerikanisches Spanglish . FBI wird im Spanischen nicht als /éfbiai/ ausgesprochen, genauso wie /síaiei/ nicht ausgesprochen wird, wenn man von der CIA spricht. Das englische Akronym ASAP ( so bald wie möglich ) wird im Spanischen /asap/ ausgesprochen, nicht /eieseipi/, für Sprachökonomie. Nach den Regeln des Spanischen könnte es als "jotasón/jotasones" lexikalisiert werden, wird aber in akademischen Texten nicht verwendet.
Syntax
Die mit JSON verfügbaren Datentypen sind:
- Zahlen: Negative Zahlen sind erlaubt und können optional einen durch Punkte getrennten Bruchteil enthalten. Beispiel: 123.456
- Zeichenfolgen: Repräsentieren Sequenzen von null oder mehr Zeichen. Sie werden in doppelte Anführungszeichen gesetzt und Escape-Strings sind erlaubt. Beispiel:
"Hola" - Boolesche Werte: Sie stellen boolesche Werte dar und können zwei Werte haben:
trueundfalse - null: Stellt den Nullwert dar.
- Array : Stellt eine geordnete Liste von null oder mehr Werten dar, die von beliebigem Typ sein können. Werte werden durch Kommas getrennt und der Vektor in eckige Klammern eingeschlossen. Beispiel
["juan","pedro","jacinto"] - Objekte: Dies sind ungeordnete Sammlungen von Paaren der Form <Name>:<Wert> , die durch Kommas getrennt und in geschweiften Klammern eingeschlossen sind. Der Name muss eine Zeichenfolge sein, die in doppelte Anführungszeichen eingeschlossen ist. Der Wert kann von beliebigem Typ sein. Beispiel:
{
„Abteilung“ : 8 ,
„Abteilungsname“ : „Vertrieb“ ,
„Manager“ : „Juan Rodríguez“ ,
„Mitarbeiter“ :[
{
„ Vorname“ : „Pedro“ ,
„Nachname“ : „Fernández“
},{
„Name " : "Jacinto" ,
"Nachname" : "Benavente"
}
]
}
Verarbeitungsmodelle
Da JSON ein weit verbreitetes Format für den Datenaustausch ist, wurden APIs für verschiedene Sprachen entwickelt (zum Beispiel ActionScript , C , C++ , C# , ColdFusion , Common Lisp , Delphi , E , Eiffel , Java , JavaScript , ML , Objective- C , Objective CAML , Perl , PHP , Python , Rebol , Ruby , Lua und Visual FoxPro ), mit denen Sie diese Art von Daten parsen, generieren, transformieren und verarbeiten können.
Die am häufigsten verwendeten Programmiermodelle zum Umgang mit JSON in den verschiedenen Sprachen sind: [ 5 ]
- Objektmodell.- Das vollständige JSON wird im Speicher in einem Baumformat gespeichert. Dieser Baum wird mit den entsprechenden APIs durchsucht, analysiert und modifiziert. Da alles in den Speicher geladen und dann verarbeitet wird, verbraucht dieses Modell viele Ressourcen. Es ist jedoch sehr flexibel, den Inhalt zu manipulieren. Dieses Modell wird beispielsweise in Java von JSR 353 und von der Jackson -Bibliothek zugelassen .
- Flussmodell: Daten werden blockweise gelesen oder geschrieben. Beispielsweise generiert der Parser jedes Mal, wenn ein Block gelesen wird, entsprechende Ereignisse, um anzuzeigen, um welche Art von Block es sich handelt. Der Client kann den Inhalt verarbeiten, indem er auf die entsprechenden Ereignisse lauscht. Darüber hinaus entscheidet der Client, wie der JSON gelesen wird, sodass Inhalte mitten im Prozess angehalten oder übersprungen werden können. Der Schreibvorgang hat analoge Eigenschaften. Dieses Modell ist beispielsweise in Java durch JSR 353 zulässig.
- Konvertieren von JSON-Objekten in Sprachobjekte. In Java wird dies beispielsweise von den Jackson- und Gson- Bibliotheken getan .
Verwendung von JSON
Theoretisch ist es trivial, JSON mithilfe der JSON.parse()integrierten Funktion der Sprache in JavaScript zu parsen. Zum Beispiel:
meinObjekt = JSON . analysieren ( json_data );
In der Praxis sprechen Sicherheitsüberlegungen im Allgemeinen gegen die Verwendung von eval für Rohdaten, und es sollte ein separater JavaScript-Parser verwendet werden, um die Sicherheit zu gewährleisten. Der von JSON.org bereitgestellte Parser verwendet ihn eval()in seiner Parse-Funktion und schützt ihn mit einem regulären Ausdruck, sodass die Funktion nur sichere Ausdrücke sieht.
Ein Beispiel für den JSON-Datenzugriff mit XMLHttpRequest ist:
var http_request = new XMLHttpRequest ();
var url = "http://example.net/jsondata.php" ; // Diese URL sollte JSON-Daten zurückgeben
// Laden Sie die JSON-Daten vom Server herunter.
http_anfrage . onreadystatechange = handle_json ;
http_anfrage . öffnen ( "GET" , URL , wahr );
http_anfrage . senden ( null );
function handle_json () {
if ( http_request . readyState == 4 ) {
if ( http_request . status == 200 ) {
var json_data = http_request . AntwortText ;
var the_object = eval ( "(" + json_data + ")" );
} else {
alert ( "Es gab ein Problem mit der URL." );
}
http_request = null ;
}
}
Beachten Sie, dass die Verwendung von XMLHttpRequest in diesem Beispiel nicht von allen Browsern unterstützt wird, da syntaktische Variationen für Internet Explorer , Opera , Safari und Mozilla -basierte Browser existieren . [ 6 ]
Es ist auch möglich, <iframe>versteckte Elemente zu verwenden, um die Daten asynchron anzufordern, oder Anfragen zu verwenden <form target="url_to_cgi_script" />. Diese Methoden waren vor dem Aufkommen der weit verbreiteten Verwendung von XMLHttpRequest am weitesten verbreitet.
Für das .NET-Framework gibt es eine Bibliothek [ 7 ] , die .NET-Klassen mit JSON-Syntax für die Kommunikation zwischen Client und Server in beide Richtungen exportiert.
JSON-Beispiel
Nachfolgend finden Sie ein einfaches Beispiel für die Definition der Menüleiste mit JSON und XML.
JSON:
{
"menu" : {
"id" : "file" ,
"value" : "File" ,
"popup" : {
"menuitems" : [
{
"value" : "New" , "onclick" : "CreateNewDoc()"
},{
"value" : "Open" , "onclick" : "OpenDoc()"
},{
"value" : "Close" , "onclick" : "CloseDoc()"
}
]
}
}
}
Es ist eine mögliche JSON-Darstellung des folgenden XML:
<menu id= "file" value= "File" >
<popup>
<menuitem value= "New" onclick= "CreateNewDoc()" />
<menuitem value= "Open" onclick= "OpenDoc()" />
<menuitem value= "Close" onclick= "CloseDoc()" />
</popup>
</menu>
Vergleich mit XML und anderen Auszeichnungssprachen
Es gibt viele JSON-Parser auf der Serverseite, mit mindestens einem Parser für die meisten Umgebungen. In einigen Sprachen, wie Java oder PHP , stehen verschiedene Implementierungen zur Auswahl. In JavaScript ist das Parsen nativ mit der JSON.parse(). Beiden Formaten fehlt ein Mechanismus zur Darstellung binärer großer Objekte .
Unabhängig vom XML-Vergleich kann JSON bei effektiver Anwendung sehr kompakt und effizient sein. Zum Beispiel die Such- DHTML -Anwendung in "BarracudaDrive" (auf Englisch) . Archiviert vom Original am 21. Mai 2006. erhält Verzeichnislisten als JSON vom Server. Diese Suchanwendung fragt den Server ständig nach neuen Verzeichnissen ab und ist bemerkenswert schnell, sogar über eine langsame Verbindung.
Serverseitige Umgebungen erfordern in der Regel die Integration eines JSON-Parser-Objekts oder einer integrierten Funktion. Einige Programmierer, insbesondere diejenigen, die mit der Sprache C vertraut sind , finden JSON natürlicher als XML, aber andere Entwickler finden seine knappe Notation etwas verwirrend, insbesondere wenn es um stark oder tief verschachtelte Daten geht.
Weitere Vergleiche zwischen JSON und XML finden Sie auf JSON.org [ 8 ]
YAML ist eine Obermenge von JSON, die versucht, einige seiner Einschränkungen zu überwinden. Obwohl wesentlich komplexer, [ 9 ] kann es immer noch als leichtgewichtig betrachtet werden. Die Programmiersprache Ruby verwendet YAML als Standardformat für die Serialisierung . Somit ist ein recht einfacher Umgang mit JSON möglich.
Siehe auch
- AJAX
- freie Basis
- jq-Sprache für die JSON-Verarbeitung
- Javascript
- XMLHttpRequest
- XML
- YAML , Obermenge von JSON
Referenzen
- ↑ Yahoo! . «Die Verwendung von JSON mit Yahoo! Webdienste» . Archiviert vom Original am 6. Januar 2010 . Abgerufen am 2. März 2010 .
- ^ "Doug Crockford "Google Tech Talks: JavaScript: Die guten Teile " " . 7. Februar 2009.
- ↑ RAE. «Akronym | Panhispanisches Wörterbuch der Zweifel» . "Pan-Hispanisches Wörterbuch der Zweifel" . Abgerufen am 25. Juni 2021 .
- ↑ Kapic, Edin (15. April 2016). «„Jotasón“ und die (schlechte) Aussprache von Computerbegriffen» . EdinKapic.com . Abgerufen am 2. September 2018 .
- ↑ RESTful-Java-Webdienste. Jobinesh Purushothaman. Packt Publishing 2015. Zweite Ausgabe
- ↑ ".json-Dateierweiterung: Wozu dienen JSON-Dateien?" . offene Dateien . Abgerufen am 22. Oktober 2021 .
- ↑ http://ajax.schwarz-interactive.de Archiviert am 7. März 2011 auf der Wayback Machine .
- ↑ „Beispielseite“ . JSON.org (auf Englisch) .
- ↑ Ippolito, Bob (19. Juli 2005). "Was ist mit YAML passiert?" (auf Englisch) . Archiviert vom Original am 14. Februar 2012 . Abgerufen am 22.11.2012 .
Externe Links
- Die JSON-Spezifikation (auf Englisch) - JSON-Spezifikation (auf Spanisch)
- JSON: Die fettfreie Alternative zu XML
- Nützliche Präsentation von JSON (auf Spanisch)
- JSON-Parser: Anzeigen und Bearbeiten von JSON
- Tutorials
-
- AJAX ohne XML Vergleich zwischen XML-, JSON- und Javascript-Objekten
- Beschleunigen von AJAX mit JSON Zeigt, wie einfach es ist, JSON anstelle von XML zu referenzieren
- AJAX-Kommunikation – PHP mit JSON Zeigt, wie Sie Informationen in AJAX erhalten, indem Sie eine PHP-Datei konsultieren. Es berücksichtigt das Problem der Sonderzeichen. (in Spanisch)
- Animationen für das Web mit JSON Zeigt, wie Animationen mit After Effects im JSON-Format exportiert werden (auf Spanisch)