Was ist JSON?

JSON steht für Java Script Object Notation…

Mit dem Internet und der allgemeinen Vernetzung von Computersystemen ist seit jeher der Bedarf an Datenaustausch gestiegen. Für Systeme im Web ist dabei die Plattformunabhängigkeit sehr wichtig. Mit JSON (Java Script Object Notation) hat sich für den Datenaustausch zwischen webbasierten Systemen ein sehr leichtgewichtiges, menschen- und maschinenlesbares Datenformat etabliert. Alles Wichtige für den Einsatz in der Praxis und die wichtigsten Fragen zu JSON finden Sie hier einfach erklärt.

Inhalt

Das JSON Dokument

Das Datenpaket im JSON Format wird JSON Dokument genannt. Das Dokument hat eine konsistente, prüfbare Struktur. Es wird zwischen Anwendungen immer als Ganzes ausgetauscht. Für die menschliche Bearbeitung eines JSON Dokuments ist es am einfachsten, wenn das Dokument als Datei im Dateisystem vorliegt. Hier wird im Normalfall die Dateiendung “*.JSON” verwendet. Der Inhalt eines JSON Dokuments ist grundsätzlich Objekt-orientiert aufgebaut (siehe Grundstruktur).

Zusammenhang JSON und JavaScript

Die Definition von JSON stammt aus einer Untermenge der JavaScript-Sprachdefinition des ECMA-262 Standards. Die Tatsache, dass JSON diesen Ursprung hat und auch der Name “Java Script Object Notation” bedeuten aber nicht, dass JSON auf die Verwendung in JavaScript beschränkt ist. JSON ist ein komplett unabhängiges Datenformat ohne Bindung an die JavaScript-Sprache. In JavaScript gibt es viele integrierte Funktionen zum Arbeiten mit JSON, was es besonders leicht macht, JSON in JavaScript zu verwenden. In vielen anderen Sprachen sind aber auch entsprechende Frameworks vorhanden. Im Zweifel kann aber in jeder Programmiersprache das einfache Textformat von JSON ausgelesen und verarbeitet werden.

Einsatzbereiche und praktischer Nutzen

JSON ist mit seiner sehr einfachen Struktur und der Kodierung im Unicode Zeichensatz das ideale Format, um Daten zwischen Systemen auszutauschen. Und das, ohne Rücksicht auf Betriebssysteme, Rechnerarchitekturen oder Programmiersprachen nehmen zu müssen.
Daten werden im JSON Format gespeichert und als Datenpaket über beliebige Wege ans Zielsystem übermittelt (http, Datei, TCP/IP, Datenbank, etc.). Durch die Struktur und die integrierten beschreibenden Elemente kann das Zielsystem die Daten sehr einfach wieder auswerten. Da die Daten als abgeschlossenes Paket/Dokument ausgetauscht werden, eignet sich JSON sehr gut für asynchrone Prozesse. Am häufigsten verbreitet ist JSON in Web-Umgebungen, etabliert sich aber immer mehr in verschiedenen Anwendungsbereichen.

Grundstruktur

Die Formatierung des Inhalts in einem JSON Dokument muss einer strikten Struktur-Vorgabe folgen. Die ursprüngliche Spezifikation stammt von Douglas Crockford und ist als JSON Definition dokumentiert. Ein JSON Dokument beginnt und endet immer mit ‘{‘ und ‘}’. Zwischen den geschweiften Klammern werden die Inhalte platziert. Die geschweiften Klammern umfassen ein Objekt. Im Dokument selbst können wiederum weitere Objekte definiert werden. Ein Datenfeld wird mit einem Namen eingeleitet und der Wert folgt nach einem Doppelpunkt. Der Wert kann dann wieder ein Objekt sein.

Struktur


{
"Data field1": "Value"
"Data object."
{
"Field 1": 123
"Field2": "Text"
"Field3Array":["Value1", "Value2", "Value3", "Value4"] }
}
}

Darstellung von Zahlen und Zeichenketten

Die in JSON gespeicherten Variablen können in folgenden Typen gespeichert werden:

Boolean: Der Wahrheitswert kann entweder true oder false sein. Die Schlüsselbegriffe werden ohne Anführungszeichen verwendet (z.B. “aktiv”: true).

Zahl: Eine Zahl wird mit den Ziffern 0-9, optional mit einem Punkt und Vorzeichen dargestellt. Auch ein Exponent kann genutzt werden (z.B.  “Entfernung”: 3.1e+12).

Zeichenketten: Eine Zeichenkette ist ein beliebiger Text, der zwischen Anführungszeichen platziert wird. Eine Zeichenkette wird auch als String bezeichnet (z. B. “Stadt”: ”Hamburg”).

null: Ist eine Variable leer, kann dies durch die Zuweisung von null ausgedrückt werden. Das ist nicht zu verwechseln mit der Zahl 0 oder einem Leer-String. Null bedeutet wirklich “nichts” (Beispiel “Verknüpfung”: null).

Beispiel

Ein etwas komplexeres Beispiel erklärt am Produktionsauftrag mit mehreren Komponenten. Der Produktionsauftrag wird durch einige Basisfelder beschrieben und ein Array, das die Komponenten enthält. Die Komponenten werden als eigene Objekte mit den jeweiligen Beschreibungsfeldern beschrieben.

{
"Order number": 4711,
"Quantity": 15000.0,
"Item": "Product A",
"Planned date": "6/4/2020",
"Release": true,
"Components":[
{
"Name": "Component A",
"Material number": 292345,
"Quantity": 345,123,
"Storage areas": [ 3, 6, 23 ] }, {
"Name": "Component B",
"Material number": 908431,
"Quantity": 12034,123,
"Storage areas": [ 1, 2, 9 ] },
{
"Name": "Component C",
"Material number": 928398,
"Quantity": 2623.2,
"Storage locations": [ 10 ] },
] }

Vergleich JSON und XML

Bei XML (Extensible Markup Language) handelt es sich um eine Beschreibungssprache. Im Kern ist die Beschreibung von Daten ähnlich wie bei JSON. In XML ergibt sich durch die Beschreibung mit Tags ein höherer Overhead. Daten können nicht nur durch Tags, sondern auch durch Attribute beschrieben werden (z.B.:  <TAG1 AttributA=”Wert”>TEXT</TAG1>). Daher müssen beim Datenaustausch Sender und Empfänger sehr klare Informationen über die vereinbarte Struktur vorliegen haben.
Im Gegensatz dazu ist die Struktur bei JSON sehr flexibel und in jedem Fall für den Empfänger komplett verständlich und in Objekte umwandelbar, ohne jegliche vorherige Strukturvereinbarung.
XML eignet sich daher für klar definierte Daten-Schnittstellen und JSON für den flexiblen Datenaustausch.

JSON in NoSQL

Ein bekannter Anwendungsfall für JSON sind die dokumentenbasierten Datenbanken nach dem NoSQL Konzept. Diese Datenbanken nehmen JSON Dokumente zur Speicherung entgegen und liefern diese bei Abfragen wieder zurück.
Durch die flexible Struktur von JSON können beliebige JSON Dokumente in eine dokumentenorientierte NoSQL Datenbank übergeben werden. Die Abfrage-Funktionen dieser Datenbanken können auf sämtliche Felder und Objekte in den Dokumenten ohne vorherige Schemadefinition zugreifen und dadurch die Dokumente mit passenden Kriterien bei Abfragen zurückgeben. Eine Schema-Definition wie beim klassischen SQL entfällt komplett.
Ein Beispiel für eine solche Datenbank ist die MongoDB Datenbank. Der OPC Router verfügt über ein Plug-in, um Daten an MongoDB Datenbanken zu übergeben.

JSON und MQTT

Das MQTT Protokoll ist ein einfaches und leichtgewichtiges Transport-Protokoll für den Datenaustausch. Es wird viel von Geräten und Diensten genutzt, die mit beschränkter Bandbreite und Rechenkapazität auskommen müssen. Das Datenformat von MQTT ist nicht spezifiziert. Aber die Daten-Nutzlast (Payload) wird sehr häufig in Form eines JSON Dokuments formatiert, da es ideal für diesen Anwendungsfall ist. Aus diesem Grund finden sich viele MQTT-Verbindungspartner, die ihre Daten in Form von JSON publizieren.

JSON in der Industrie

In der industriellen Umgebung gewinnt das JSON Format an Verbreitung. Vorangetrieben wird dies vor allem durch die immer engere Verzahnung von Maschinen und Feldebenen-Geräten mit Webtechnologien. Durch Feldgeräte und Softwaresysteme mit REST Schnittstellen (Was ist REST?) und Einbindung von Sensoren und Geräten per MQTT ist JSON schon sehr verbreitet. Aktuell kommt der Einsatz von NoSQL hinzu und auch der immer größer werdende Trend zu Machine Learning und Künstlicher Intelligenz machen JSON als einfaches, aber flexibes Datenformat unverzichtbar.

Geräte / Dienste

Dienste, die Informationen per REST Schnittstelle bereitstellen, geben ihre Daten oft als JSON zurück. Ein Beispiel ist der Wetterdienst OpenWeatherMap. Dieser Beispielaufruf gibt das aktuelle Wetter in London als JSON aus: https://openweathermap.org/

Ein ausführliches Beispiel ist in unserem Anleitungsartikel zur Anbindung von OpenWeatherMap zu finden.
Geräte, die JSON nutzen sind oftmals Datenquellen, welche Ihre Daten per MQTT versenden und damit Teil des IoT’s darstellen. PFC Steuerungen von Wago können zum Beispiel die JSON Dokumente per MQTT versenden.

Testen Sie jetzt den OPC Router!

Kostenlos & Unverbindlich

Erhalten Sie den Link zum aktuellen OPC Router und verpassen Sie keine der Produkt-Neuerungen.

Ja, ich möchte jetzt kostenlos testen