Was ist JSON? Ein besseres Format für den Datenaustausch

Die JavaScript-Objektnotation ist eine schemalose, textbasierte Darstellung strukturierter Daten, die auf Schlüssel-Wert-Paaren und geordneten Listen basiert. Obwohl JSON von JavaScript abgeleitet ist, wird es entweder nativ oder über Bibliotheken in den meisten wichtigen Programmiersprachen unterstützt. JSON wird üblicherweise, aber nicht ausschließlich, zum Austausch von Informationen zwischen Webclients und Webservern verwendet. 

In den letzten 15 Jahren ist JSON im Web allgegenwärtig geworden. Heute ist es das Format der Wahl für fast jeden öffentlich verfügbaren Webdienst und wird häufig auch für private Webdienste verwendet.

Die Popularität von JSON hat auch dazu geführt, dass viele Datenbanken native JSON-Unterstützung bieten. Relationale Datenbanken wie PostgreSQL und MySQL werden jetzt mit nativer Unterstützung zum Speichern und Abfragen von JSON-Daten ausgeliefert. NoSQL-Datenbanken wie MongoDB und Neo4j unterstützen ebenfalls JSON, obwohl MongoDB hinter den Kulissen eine leicht modifizierte Binärversion von JSON verwendet.

In diesem Artikel werfen wir einen kurzen Blick auf JSON und diskutieren, woher es stammt, welche Vorteile es gegenüber XML hat, welche Nachteile es hat, wann Sie es verwenden sollten und wann Sie Alternativen in Betracht ziehen sollten. Aber lassen Sie uns zunächst untersuchen, wie JSON in der Praxis aussieht.

JSON-Beispiel

Hier ist ein Beispiel für in JSON codierte Daten:

{

  "Vorname": "Jonathan",

  "Nachname": "Freeman",

  "LoginCount": 4,

  "IsWriter": wahr,

  "WorksWith": ["Spantree Technology Group", ""],

  "Haustiere": [

    {

      "Name": "Lilly",

      "Typ": "Waschbär"

    }}

  ]]

}}

Die obige Struktur definiert klar einige Attribute einer Person. Es enthält einen Vor- und Nachnamen, die Häufigkeit, mit der sich die Person angemeldet hat, ob diese Person ein Schriftsteller ist, eine Liste der Unternehmen, mit denen die Person zusammenarbeitet, und eine Liste der Haustiere der Person (in diesem Fall nur eines). Eine Struktur wie die oben beschriebene kann von einem Server an einen Webbrowser oder eine mobile Anwendung übergeben werden, die dann eine Aktion ausführt, z. B. das Anzeigen der Daten oder das Speichern zur späteren Bezugnahme.

JSON ist ein generisches Datenformat mit einer minimalen Anzahl von Werttypen: Zeichenfolgen, Zahlen, Boolesche Werte, Listen, Objekte und Null. Obwohl die Notation eine Teilmenge von JavaScript ist, werden diese Typen in allen gängigen Programmiersprachen dargestellt, was JSON zu einem guten Kandidaten für die Übertragung von Daten über Sprachlücken hinweg macht.

JSON-Dateien

JSON-Daten werden in Dateien gespeichert, die mit der Erweiterung .json enden. In Übereinstimmung mit dem von Menschen lesbaren Ethos von JSON handelt es sich lediglich um reine Textdateien, die leicht geöffnet und überprüft werden können. Wie im SQLizer-Blog erläutert, ist dies auch ein Schlüssel für die umfassendere Interoperabilität von JSON, da nahezu jede Sprache, die Sie benennen können, einfache Textdateien lesen und verarbeiten kann und diese einfach über das Internet gesendet werden können.

Warum sollte ich JSON verwenden? 

Um die Nützlichkeit und Wichtigkeit von JSON zu verstehen, müssen wir etwas über die Geschichte der Interaktivität im Web verstehen. 

In den frühen 2000er Jahren begann sich die Interaktivität im Web zu verändern. Zu dieser Zeit diente der Browser hauptsächlich als dummer Client zum Anzeigen von Informationen, und der Server hat die ganze harte Arbeit geleistet, um den Inhalt für die Anzeige vorzubereiten. Wenn ein Benutzer auf einen Link oder eine Schaltfläche im Browser klickt, wird eine Anfrage an den Server gesendet, der Server bereitet die als HTML benötigten Informationen vor und der Browser rendert den HTML-Code als neue Seite. Dieses Muster war träge und ineffizient, sodass der Browser alles auf der Seite neu rendern musste, selbst wenn sich nur ein Abschnitt der Seite geändert hatte.

Da das Nachladen ganzer Seiten kostspielig war, suchten Webentwickler nach neueren Technologien, um die Benutzererfahrung insgesamt zu verbessern. In der Zwischenzeit erwies sich die Möglichkeit, Webanfragen im Hintergrund zu stellen, während eine Seite angezeigt wurde, die kürzlich in Internet Explorer 5 eingeführt wurde, als praktikabler Ansatz, um Daten schrittweise für die Anzeige zu laden. Anstatt den gesamten Inhalt der Seite neu zu laden, wird durch Klicken auf die Schaltfläche "Aktualisieren" eine Webanforderung ausgelöst, die im Hintergrund geladen wird. Beim Laden des Inhalts konnten die Daten mit JavaScript, der universellen Programmiersprache in Browsern, bearbeitet, gespeichert und auf der Seite angezeigt werden.

REST vs. SOAP: Die JSON-Verbindung

Ursprünglich wurden diese Daten im XML-Format (ein Beispiel siehe unten) unter Verwendung eines Messaging-Protokolls namens SOAP (Simple Object Access Protocol) übertragen. XML war jedoch ausführlich und in JavaScript schwer zu verwalten. JavaScript verfügte bereits über Objekte, mit denen Daten innerhalb der Sprache ausgedrückt werden können. Daher nahm Douglas Crockford eine Teilmenge dieses Ausdrucks als Spezifikation für ein neues Datenaustauschformat und nannte ihn JSON. JSON war für Benutzer viel einfacher zu lesen und für Browser zu analysieren.

Im Laufe der 00er Jahre begann eine andere Webdiensttechnologie namens Representational State Transfer (REST), SOAP zu überholen, um Daten zu übertragen. Einer der großen Vorteile der Programmierung mit REST-APIs besteht darin, dass Sie mehrere Datenformate verwenden können - nicht nur XML, sondern auch JSON und HTML. Als Webentwickler JSON gegenüber XML bevorzugten, bevorzugten sie auch REST gegenüber SOAP. Wie Kostyantyn Kharchenko es im Svitla-Blog formulierte: „In vielerlei Hinsicht ist der Erfolg von REST auf das JSON-Format zurückzuführen, da es auf verschiedenen Plattformen einfach zu verwenden ist.“

Heute ist JSON der De-facto-Standard für den Datenaustausch zwischen Web- und mobilen Clients und Back-End-Diensten. 

JSON vs. XML

Wie oben erwähnt, ist XML die Hauptalternative zu JSON. XML wird jedoch in neuen Systemen immer seltener, und es ist leicht zu verstehen, warum. Unten finden Sie eine Version der Daten, die Sie oben gesehen haben, diesmal in XML:

  Jonathan

  Freeman

  4

  wahr

    Spantree Technology Group

      Lilly

      Waschbär

XML ist nicht nur ausführlicher (in diesem Fall genau doppelt so ausführlich), sondern führt auch zu Mehrdeutigkeiten beim Parsen in eine JavaScript-freundliche Datenstruktur. Das Konvertieren von XML in ein JavaScript-Objekt kann zehn bis hundert Codezeilen dauern und erfordert letztendlich eine Anpassung basierend auf dem zu analysierenden Objekt. Das Konvertieren von JSON in ein JavaScript-Objekt erfordert eine Codezeile und erfordert keine Vorkenntnisse über das zu analysierende Objekt.

Einschränkungen von JSON

Obwohl JSON ein relativ übersichtliches, flexibles Datenformat ist, mit dem in vielen Programmiersprachen problemlos gearbeitet werden kann, weist das Format einige Nachteile auf. Hier sind die fünf Hauptbeschränkungen: 

  1. Kein Schema. Einerseits bedeutet dies, dass Sie die Flexibilität haben, die Daten beliebig darzustellen. Andererseits bedeutet dies, dass Sie versehentlich sehr leicht unförmige Daten erstellen können.
  2. Nur ein Zahlentyp: das Gleitkommaformat IEEE-754 mit doppelter Genauigkeit. Das ist ein ziemlicher Schluck, aber es bedeutet einfach, dass Sie die vielfältigen und nuancierten Zahlentypen, die in vielen Programmiersprachen verfügbar sind, nicht nutzen können.
  3. Kein Datumstyp. Diese Auslassung bedeutet, dass Entwickler auf die Verwendung von Zeichenfolgendarstellungen von Datumsangaben zurückgreifen müssen, was zu Formatierungsdiskrepanzen führt, oder Datumsangaben in Form von Millisekunden seit der Epoche (1. Januar 1970) darstellen müssen.
  4. Keine Kommentare. Dies macht es unmöglich, Felder inline zu kommentieren, was zusätzliche Dokumentation erfordert und die Wahrscheinlichkeit von Missverständnissen erhöht.
  5. Ausführlichkeit. JSON ist zwar weniger ausführlich als XML, aber nicht das prägnanteste Datenaustauschformat. Für hochvolumige oder spezielle Dienste möchten Sie effizientere Datenformate verwenden.

Wann sollte ich JSON verwenden?

Wenn Sie Software schreiben, die mit einem Browser oder einer nativen mobilen Anwendung kommuniziert, sollten Sie JSON als Datenformat verwenden. Die Verwendung eines Formats wie XML ist eine veraltete Wahl und eine rote Fahne für Front-End- und mobile Talente, die Sie sonst gerne anziehen würden.

Bei der Server-zu-Server-Kommunikation ist es möglicherweise besser, ein Serialisierungsframework wie Apache Avro oder Apache Thrift zu verwenden. JSON ist hier keine schlechte Wahl und könnte immer noch genau das sein, was Sie brauchen, aber die Antwort ist nicht so klar wie für die Web- und Mobilkommunikation.

Wenn Sie NoSQL-Datenbanken verwenden, bleiben Sie bei allem, was die Datenbank Ihnen bietet, ziemlich hängen. In relationalen Datenbanken, die JSON als Typ unterstützen, ist es eine gute Faustregel, es so wenig wie möglich zu verwenden. Relationale Datenbanken wurden für strukturierte Daten optimiert, die zu einem bestimmten Schema passen. Während die meisten jetzt flexiblere Daten in Form von JSON unterstützen, können Sie bei der Abfrage von Eigenschaften in diesen JSON-Objekten einen Leistungseinbruch erwarten.

JSON ist das allgegenwärtige De-facto-Format zum Senden von Daten zwischen Webservern, Browsern und mobilen Anwendungen. Durch sein einfaches Design und seine Flexibilität ist es leicht zu lesen und zu verstehen und in den meisten Fällen leicht in der Programmiersprache Ihrer Wahl zu manipulieren. Das Fehlen eines strengen Schemas ermöglicht die Flexibilität des Formats, aber diese Flexibilität macht es manchmal schwierig sicherzustellen, dass Sie JSON richtig lesen und schreiben.

JSON-Parser

Der Teil des Codes einer Anwendung, der als JSON gespeicherte Daten in ein Format umwandelt, das die Anwendung verwenden kann, wird als Parser bezeichnet. JavaScript enthält erwartungsgemäß einen nativen Parser, die JSON.parse () -Methode.

Möglicherweise müssen Sie etwas mehr Arbeit leisten, um mit JSON in stark typisierten Sprachen wie Scala oder Elm zu arbeiten. Die weit verbreitete Einführung von JSON bedeutet jedoch, dass es Bibliotheken und Dienstprogramme gibt, die Sie bei den schwierigsten Aufgaben unterstützen. 

Die Website json.org enthält eine umfassende Liste von Codebibliotheken, mit denen Sie JSON in so unterschiedlichen Sprachen wie Python, C # und COBOL analysieren, generieren und bearbeiten können.

JSON-Dienstprogramme

Wenn Sie JSON-codierte Daten direkt bearbeiten oder untersuchen möchten, ohne selbst Code zu schreiben, gibt es eine Reihe von Online-Dienstprogrammen, die Ihnen helfen können. Alle programmatischen Entsprechungen in den oben verlinkten Codebibliotheken. Sie können jedoch JSON-Code ausschneiden und in diese browserbasierten Tools einfügen, um JSON besser zu verstehen oder eine schnelle und fehlerhafte Analyse durchzuführen:

  • JSON-Formatierer: JSONLint formatiert und validiert beliebigen JSON-Code.
  • JSON Viewer: Stack.hu verfügt über eine Site, die einen interaktiven Baum erstellt, um Ihnen das Verständnis der Struktur Ihres JSON-Codes zu erleichtern. 
  • JSON Beautifier: Wenn Sie Ihren JSON-Code mit Syntaxfarben und Ähnlichem „hübsch drucken“ möchten, kann Prettydiff Ihnen helfen. 
  • JSON-Konverter: Müssen Sie Daten aus einem JSON-Format schnell in etwas anderes verschieben? Convertcsv.com verfügt über Tools, mit denen JSON in CSV (das dann in Excel geöffnet werden kann) oder XML konvertiert werden kann.

JSON-Tutorial

Sind Sie bereit, mehr über die Arbeit mit JSON in Ihren interaktiven Anwendungen zu erfahren? Das Mozilla Developer Network bietet ein großartiges Tutorial, mit dem Sie mit JSON und JavaScript beginnen können. Wenn Sie bereit sind, in andere Sprachen zu wechseln, lesen Sie das Tutorial zur Verwendung von JSON mit Java (aus Baeldung), mit Python (aus DataCamp) oder mit C # (aus der Software Testing Help). Viel Glück!

Josh Fruhlinger hat zu diesem Artikel beigetragen.