JSON statt XML

Was ist JSON?

Die Abkürzung JSON steht für JavaScript Object Notation. Mit JSON kann man Datenstrukturen in einer Programmiersprache, die eine JSON Bibliothek anbietet serialisieren und in JavaScript mit Eval() wieder deserialisieren. Dabei muss das dekodierende Programm aber nicht zwingend JavaScript sein, die Nutzung zum Datenaustausch in einer JavaScriptlosen Umgebung ist ebenfalls möglich.

Dadurch ist es z.b. in unserem Beispiel möglich auf der Serverseite ein assoziatives Array in PHP zu erstellen. Dieses Array kann man dann mit einer Bibliothek in das JSON Format konvertieren und an den Client übermitteln.

Der Client kann diesen JSON String dann mit Eval oder der Funktion von json.org wieder in ein Array konvertieren. Anderstrum ist es natürlich ebenfalls möglich ein Array am Client in die JSON Notation zu konvertieren und am Server wieder zu dekodieren.

Wie bereits weiter oben erwähnt erfolgt die Auswertung mittels der JavaScript Funktion eval. Es gibt ausserdem aber auch eine Bibliothek von json.org die diese Aufgabe übernimmt. Mit dieser Bibliothek ist über die Methode toJSONString ebenfalls der Umgekehrte Weg möglich. Zu bekommen ist dieses Skript unter http://www.json.org/json.js


Die Verwendung dieser Library führt jedoch auch zu einem längeren JavaScript Code.

Weitere Informationen zu JSON sind unter der Website www.json.org oder im Wikipedia zu finden http://de.wikipedia.org/wiki/JSON


Für PHP gibt es ein PEAR Paket dass es erlaubt PHP Datenstrukturen mit der Methode "encode" in das JSON Format zu konvertieren. Angewendet auf unser Beispiel zur Überstzung würde eine Implementierung mit JSON folgendermaßen aussehen:

 

Verarbeitung der Ajax Antwort mittels JSON / Eval

Die JSON Variante des Währungsclients würde folgendermaßen aussehen:

Implementierung des Servers mit der Nutzung von PEAR JSON

Die Implementierung des Servers in PHP mit der Nutzung der pear JSON Bibliothek sieht wie folgt aus:

Der codierte JSON String

Der von JSON codierte String für die Umrechnung von 10 Euro hätte folgenden Aufbau:

Navigation