JSON (JavaScript Object Notation) – Einfach erklärt

Json Javascript Object Notation Grundlagen

Was ist JSON (JavaScript Object Notation)?

JSON (JavaScript Object Notation) ist ein leichtgewichtiges Datenaustauschformat. Es ist für Menschen leicht zu lesen und zu schreiben und für Maschinen leicht zu analysieren und zu erzeugen. Dabei handelt es sich um eine Textformat. Es ist völlig sprachunabhängig, verwendet aber Konventionen, die Programmierern der C-Sprachfamilie vertraut sind. Daher sollten sich Entwickler von C, C++, C#, Java, JavaScript, Perl, Python und viele anderen mit JSON schnell wohlfühlen.

Wofür kann ich JSON (JavaScript Object Notation) nutzen?

Sie können JSON in erster Linie für den Austausch von Daten zwischen Webanwendungen und Servern verwenden. Damit können Sie aber auch Daten speichern. Häufig wird JSON als Konfigurationsformat genutzt. JSON-Daten werden als eine Sammlung von Schlüssel-Wert-Paaren dargestellt. Wobei jeder Schlüssel eine Zeichenkette ist. Jeder Wert ist eine Zeichenkette, eine Zahl, ein boolescher Wert, eine Null, ein Array oder ein anderes JSON-Objekt.

Hier ist ein Beispiel für ein JSON-Objekt:

{
 "name": "Martin Koch",
 "age": 42,
 "address": {
 "street": "123 Main St",
 "city": "New York City",
 "state": "NY",
 "zip": "10001"
 },
 "phoneNumbers": [
 {
 "type": "privat",
 "number": "+436641234567"
 },
 {
 "type": "arbeit",
 "number": "+436647654321"
 }
 ]
}

Dieses JSON-Objekt stellt eine Person mit einem Namen, Alter, einer Adresse und einer Reihe von Telefonnummern dar. JSON wird in vielen  APIs (Application Programming Interface) wie Twitter, Facebook und Google Maps verwendet, weil es für Computer leicht zu verarbeiten und für Entwickler leicht zu lesen und zu schreiben ist.

Vorteile / Nachteile

JavaScript Object Notation hat sich zu einem beliebten Format für den Datenaustausch entwickelt, da es leichtgewichtig, einfach zu lesen und zu schreiben und für Maschinen einfach zu parsen und zu generieren ist. Hier sind einige der wichtigsten Vor- und Nachteile der Verwendung von JSON: 

Vorteile:

  • Leichtgewichtig und für Menschen einfach zu lesen und zu schreiben, was es für Entwickler einfach macht, damit zu arbeiten.
  • Es ist ein Textformat und daher sprachunabhängig, was bedeutet, dass jede Programmiersprache JSON-Daten analysieren und generieren kann.
  • Für Maschinen leicht zu analysieren und zu generieren, was es zu einer guten Wahl für den Datenaustausch zwischen Webanwendungen und Servern macht.
  • Ausserdem hat es eine einfache und intuitive Struktur, die das Verständnis und die Arbeit mit JSON erleichtert.
  • Es wird von den meisten modernen Programmiersprachen, Frameworks und Plattformen unterstützt, was es zu einem weithin unterstützten und zugänglichen Format macht.

Nachteile:

  • Leider kann es mehr Platz beanspruchen als andere Binärformate, da es eine ausführlichere Syntax verwendet und Anführungszeichen um Schlüssel und Zeichenketten erfordert.
  • Es kann bestimmte Datentypen nicht darstellen, die in anderen Formaten möglich sind, z. B. Datumsangaben und binäre Daten.
  • Ausserdem verfügt es nicht über eine eingebaute Datenvalidierung. Einige Bibliotheken oder Frameworks bieten Funktionen für die Validierung, aber sie ist nicht inhärent.
  • Manchmal kann es für bestimmte Arten von Injektionsangriffen anfällig sein, wenn nicht vertrauenswürdige Daten zur Generierung von JSON verwendet werden.

Insgesamt ist JSON aufgrund seiner Benutzerfreundlichkeit und Kompatibilität ein beliebtes Format für den Datenaustausch. Es ist jedoch zu bedenken, dass es nicht für jeden Anwendungsfall die beste Wahl ist und einige Datentypen ein anderes Format erfordern. JSON wird weitgehend unterstützt, aber wenn Sie spezielle Anforderungen an Dinge wie Datenvalidierung oder Kompaktheit haben, müssen Sie möglicherweise andere Formate wie Protocol Buffers oder Avro in Betracht ziehen.

JSON und Standards

JavaScript Object Notation ist ein offenes Standardformat, das menschenlesbaren Text verwendet, um Datenobjekte zu übertragen, die aus Attribut-Wert-Paaren und Array-Datentypen (oder jedem anderen serialisierbaren Wert) bestehen. Es ist in der Norm ECMA-404 definiert und wird auch von vielen anderen Normen und Spezifikationen wie IEEE 754, OpenAPI oder RESTful Web Services verwendet, die JSON als Format für den Datenaustausch nutzen.

Darüber hinaus beschreibt die Spezifikation drei Algorithmen für die Umwandlung zwischen JSON-Text und einer äquivalenten Form in JavaScript, die als „JSON-to-JS“ und „JS-to-JSON“ bezeichnet werden. Die neueste Version der Spezifikation ist ECMA-404 2nd edition, die 2020 veröffentlicht wurde und die erste Ausgabe von 2013 aktualisiert.

Es ist also ein weithin akzeptiertes Datenaustauschformat, das häufig im Web und in anderen Zusammenhängen verwendet wird, und dessen Spezifikation von einer offiziellen internationalen Standardisierungsorganisation wie der ECMA standardisiert wird.

Leider ist es kein Internet Engineering Task Force (IETF) Request for Comments (RFC) Standard. Es handelt sich jedoch um einen offenen Standard, der von ECMA International im ECMA-404-Standard definiert wurde.

Obwohl JSON kein IETF-Standard ist, wird es in Internetprotokollen, insbesondere in RESTful-Webdiensten und APIs, häufig verwendet. JSON wurde von vielen Internetstandards wie OpenID Connect, OAuth 2.0 und GeoJSON verwendet, die von der IETF in verschiedenen RFCs und Entwürfen definiert wurden. JSON wird auch von vielen anderen Internetstandards und -anwendungen wie JavaScript, dem Web und dem Internet der Dinge verwendet.

JSON ist zwar weithin akzeptiert und in vielen internetbezogenen Standards implementiert, aber nicht offiziell als IETF RFC definiert. Stattdessen ist es ein Standard, der von ECMA International, einer internationalen Normungsorganisation, definiert wurde und auf der Objektliteralnotation von JavaScript basiert.

Das Format wurde erstmals 2013 von der ECMA International (ECMA-404) standardisiert und gilt heute als Industriestandard. Es wird von vielen Programmiersprachen und Plattformen unterstützt, was es zu einem weithin unterstützten und zugänglichen Format für den Datenaustausch macht.

Welche Datentypen in JSON gibt es?

Ja, JavaScript Object Notation hat einen kleinen Satz von Datentypen, die zur Darstellung verschiedener Arten von Werten verwendet werden können. Die Datentypen dazu sind:

  • Objekte: dargestellt durch eine Sammlung von Schlüssel-Wert-Paaren, wobei jeder Schlüssel eine Zeichenkette ist und jeder Wert eine Zeichenkette, eine Zahl, ein boolescher Wert, eine Null, ein Array oder ein anderes JSON-Objekt sein kann.
    Beispiel: { „name“: „John Smith“, „Alter“: 30 }
  • Arrays: dargestellt durch eine geordnete Liste von Werten, die ein beliebiger JSON-Datentyp sein können.
    Beispiel: [1, 2, 3, „four“, {„five“: 5}]
  • Strings: dargestellt durch eine Folge von null oder mehr Unicode-Zeichen, eingeschlossen in Anführungszeichen.
    Beispiel: „Hallo, Welt!
  • Zahlen: dargestellt durch Dezimal- oder Gleitkommazahlen, die ganze Zahlen oder Brüche sein können.
    Beispiel: 3.14159265
  • Boolesche Operatoren: dargestellt durch die speziellen Schlüsselwörter „true“ und „false „
    Beispiel: false
  • null: wird durch das spezielle Schlüsselwort „null“ dargestellt und bezeichnet das Fehlen eines Wertes oder einen Nullwert.
    Beispiel: null

Dies sind die wichtigsten Datentypen, die verwendet werden können. JSON ist ein leichtgewichtiges Datenaustauschformat und enthält im Vergleich zu anderen Serialisierungsformaten nicht viele Datentypen. Es soll für Menschen einfach zu lesen und zu schreiben und für Maschinen einfach zu analysieren und zu generieren sein. Aufgrund seiner Einfachheit ist JSON ein beliebtes Format für den Datenaustausch in Webanwendungen und APIs geworden.

JSON vs. XML

JSON und XML sind beides Formate für die strukturierte Darstellung von Daten, weisen jedoch einige wesentliche Unterschiede auf:

  • JSON soll leichtgewichtig und für Menschen einfach zu lesen und zu schreiben sein, während XML erweiterbar und für eine breite Palette von Anwendungen geeignet sein soll.
  • Es verwendet eine einfache Schlüssel-Wert-Struktur, während XML eine baumartige Struktur verwendet, die komplexere Beziehungen zwischen Elementen darstellen kann.
  • JSON-Daten sind in der Regel weniger ausführlich als XML, wodurch sie kompakter sind und sich leichter über das Netzwerk übertragen lassen.
  • Es wird häufiger für den Datenaustausch in Webanwendungen und APIs verwendet, während XML für ein breiteres Spektrum von Anwendungen eingesetzt wird, z. B. für Dokumentenauszeichnungen und Konfigurationsdateien.
  • JSON wird von Haus aus von JavaScript unterstützt, was es zu einer guten Wahl für die clientseitige Webentwicklung macht, während XML von einer Vielzahl von Sprachen unterstützt wird, aber in modernen JavaScript-Umgebungen weniger Unterstützung bietet.

Welche Vorteile bietet JSON gegenüber XML? 

  • Es ist leichter, einfacher und effizienter zu parsen als XML, es gilt als schneller als XML.
  • Ausserdem ist es einfacher zu lesen und zu schreiben, insbesondere für Entwickler und Programmierer.
  • JSON kann von den meisten modernen Programmiersprachen direkt verwendet werden, während eine direkte Verwendung von XML einen zusätzlichen Schritt des Parsens erfordert.

Einige der Vorteile von XML gegenüber JSON:

  • XML verfügt über integrierte Unterstützung für die Datenvalidierung und kann mit einer Vielzahl von Schemasprachen wie XSD verwendet werden, die zur Validierung der Struktur und des Inhalts von XML-Dokumenten eingesetzt werden können.
  • Im Gegensatz zu JSON kann XML Metadaten in Attributen speichern, was es vielseitiger macht.
  • XML bietet eine bessere Unterstützung für komplexere Datenstrukturen, wie z. B. gemischte Inhalte und gemischte Namensräume.

Zusammenfassung

Zusammenfassend lässt sich sagen, dass JSON ein leichtgewichtiges, benutzerfreundliches und einfach zu parsendes Datenformat ist, das sich gut für Webanwendungen und APIs eignet, während XML ein leistungsfähigeres und erweiterbares Format ist, das sich besser für eine breite Palette von Anwendungen eignet. Es ist nicht so, dass das eine besser ist als das andere, es kommt auf die spezifischen Anforderungen und den Anwendungsfall an.