Aus Linux-Magazin 09/2006

Software entwickeln unter Linux

Abbildung 1: Das übersichtliche Syntaxdiagramm des String-Typs des JSON-Formats.

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.

Abbildung 1: Das übersichtliche Syntaxdiagramm des String-Typs des JSON-Formats.

Abbildung 1: Das übersichtliche Syntaxdiagramm des String-Typs des JSON-Formats.

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

LINUX-MAGAZIN KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Readly Logo
E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben