Wer Websites mit Ajax programmieren will, aber unter einer XML-Allergie leidet, muss nicht traurig sein. Die Javascript Object Notation (JSON) verpackt Daten so gut wie XML, aber mit weniger Ballast.
|
Inhalt |
|---|
|
100 | HAL Die Libhal stattet Linux-Programme mit Bewusstsein für Hardware und Hotplug-Vorgänge aus. 104 | Netbeans Die freie Java-IDE von Sun bringt einen leicht bedienbaren GUI-Editor mit. 108 | Eiffelstudio Software auf Industrieniveau programmieren mit Design by Contract. 114 | Perl-Snapshot Mike Schilli zeigt, wie man Websites gegen Foren-Spam immunisiert. |
War früher die Programmierung von interaktiven Webseiten eine Qual, erleichtert heute die Ajax-Methode dem Webentwickler das Leben. Für den User hat das Warten nach jedem Submit endlich ein Ende, für den Entwickler vereinfacht sich durch eine Vielzahl an Ajax-Toolkits die Programmierung.
Die XML-Kodierung der Nutzdaten, von der die Methode ihren Namen hat, ist allerdings nicht jedermanns Sache. Zum einen bringen die XML-Tags einen relativ großen Overhead mit sich, wenn es nur um wenige Daten geht. Zum anderen muss der Client (Browser) die XML-Dateien erst parsen, bevor sie als Javascript-Typen zur Verfügung stehen.
Schon 2002 entwickelte Douglas Crockford die Javascript Object Notation (JSON), die nun als alternatives Format zu XML in Ajax-Anwendungen populär wurde [1]. Dabei handelt es sich nur um ein einfaches Serialisierungsformat, das noch dazu von der Programmiersprache unabhängig ist. Die JSON-Syntax ist eine Untermenge des Javascript-Standards, weshalb diese Sprache JSON-Daten besonders leicht verarbeitet: Wer der »eval«-Funktion wohlgeformte JSON-Fragmente übergibt, erhält echte Javascript-Objekte. Für komplexere Umwandlungen inklusive Überprüfung gibt es spezielle Libraries.
Kodierung: UTF-8
Die beiden grundlegenden Typen in JSON sind das Objekt und die Liste. Die Syntax ähnelt der vieler Skriptsprachen: Geschweifte Klammern kennzeichnen Objekte, eckige Klammern Listen. Eine vollständige Spezifikation findet sich auf der JSON-Homepage. Abbildung 1 ist das Syntaxdiagramm des einfachen String-Typs. Es zeigt unter anderem, dass JSON Zeichen standardmäßig als Unicode (UTF-8) kodiert.
Das folgende Listing kodiert einige Daten einer digitalen Kamera in einem XML-Format:
<kamera>
<hersteller>Canon</hersteller>
<modell>EOS 350D</modell>
<typ>SLR</typ>
<objektiv>
<brennweite>55</brennweite>
</objektiv>
</kamera>
Die JSON-Variante ist etwas kompakter und spart zum Beispiel die schließenden Tags ein. Über die Lesbarkeit mag man streiten, aber schließlich ist JSON eher für die Kommunikation zwischen Maschinen konzipiert.
{"kamera": {
"hersteller": "Canon",
"modell": "EOS 350D",
"typ": "SLR",
"objektiv": {
"brennweite": 55
}
}}
Für die Kodierung auf der Server-Seite gibt es eine ganze Reihe von Sprachbindungen für JSON, etwa mehrere Module für PHP, darunter [2]. Eine Liste verfügbarer Bibliotheken für verschiedene Sprachen liefert die JSON-Homepage. Ein auf dieser Seite nicht verlinktes JSON-Modul für Ruby findet sich unter [3].
Gefahr erkannt …
Zum Abschluss noch eine Security-Warnung von JSON-Erfinder Douglas Crockford: Wer sein Format verwendet, ist nicht auf das »XMLHttpRequest«-Objekt angewiesen. Das stellt sonst bei Ajax-Anwendungen sicher, dass Webseiten Daten nur von jenem Server beziehen, von dem sie selbst stammen. Es fällt hier also eine Sicherheitsvorkehrung weg, sodass bösartige Skripte leichter auf lokal gespeicherte Daten wie Cookies und Autorisierungsdaten zugreifen können. Webprogrammierer sollten mit JSON daher noch mehr Vorsicht walten lassen als ohnehin schon.
|
Infos |
|---|
|
[1] JSON: [http://www.json.org] [2] JSON für PHP: [http://mike.teczno.com/json.html] [3] JSON für Ruby: [http://json.rubyforge.org] |
Copyright © 2002 Linux New Media AG





