JSON

aus Wikipedia, der freien Enzyklopädie

Wechseln zu: Navigation, Suche

JSON, kurz für JavaScript Object Notation und gesprochen wie der Name Jason, ist ein kompaktes Computer-Format in für Mensch und Maschine einfach lesbarer Textform zum Zweck des Datenaustauschs zwischen Anwendungen. Obwohl der Name auf eine alleinige Verwendung in JavaScript hindeutet, ist JSON ein unabhängiges Format, welches theoretisch in jeder Programmiersprache eingesetzt werden kann. Es existieren JSON-Implementierungen unter anderem für C, C#, Erlang, Java, JavaScript, Perl, PHP, Python, Ruby und Smalltalk.

Inhaltsverzeichnis

[Bearbeiten] Unterschied zu XML

Der am meisten betonte Unterschied von JSON zu XML ist die etwas kompaktere Kodierung von Datenstrukturen, wodurch im Gegensatz zu XML weniger Overhead produziert wird. Außerdem kann JSON z. B. in JavaScript direkt mit der eval()-Funktion in ein JavaScript-Objekt umgesetzt werden.

XML ist eine Auszeichnungssprache (Markup Language) und somit vielseitiger einsetzbar als JSON, welches keine Auszeichnungssprache, sondern ein Datenaustauschformat ist. XML genießt außerdem eine weitere Verbreitung.

Beide Formate sind nicht unbedingt zum Repräsentieren von großen Binärdaten geeignet.

[Bearbeiten] Unterstützte Datenstrukturen

JSON kennt Objekte, Arrays, Zeichenketten, Zahlen, boolesche Werte (true, false) und null. Daten können beliebig verschachtelt werden, beispielsweise ist ein Array von Objekten möglich.

[Bearbeiten] Formatdefinition

  • Ein Objekt beginnt mit { und endet mit }. Es kann eine durch Kommata geteilte, ungeordnete Liste von Eigenschaften enthalten.
  • Eine Eigenschaft besteht aus einem Schlüssel und einem Wert, getrennt durch einen Doppelpunkt.
  • Ein Schlüssel ist eine Zeichenkette.
  • Ein Wert ist ein Objekt, ein Array, eine Zeichenkette, eine Zahl oder einer der Ausdrücke true, false oder null.
  • Ein Array beginnt mit [ und endet mit ]. Es kann eine durch Kommata geteilte, geordnete Liste von Werten enthalten.
  • Eine Zeichenkette beginnt und endet mit Anführungszeichen ("). Sie kann Unicode-Zeichen und Escape-Sequenzen enthalten.
  • Ein boolescher Wert wird durch die Ausdrücke true bzw. false dargestellt. Es werden keine Anführungszeichen hierfür gesetzt.
  • Eine Zahl ist eine Folge der Ziffern 0-9. Diese Folge kann durch ein negatives Vorzeichen eingeleitet und einen Dezimalpunkt . unterbrochen sein. Die Zahl kann durch die Angabe eines Exponenten e oder E ergänzt werden, dem ein Vorzeichen + oder und eine Folge der Ziffern 0-9 folgt.
  • Leerraum-Zeichen sind beliebig verwendbar.

[Bearbeiten] Beispiel

{
  "Kreditkarte"   : "Xema",
  "Nummer"        : "1234-5678-9012-3456",
  "Inhaber"       : {
    "Name"        : "Reich",
    "Vorname"     : "Rainer",
    "Geschlecht"  : "\"männlich\"",
    "Vorlieben"   : [
      "Reiten",
      "Schwimmen",
      "Lesen"
    ],
    "Alter"       : null
  },
  "Deckung"       : 1e+6,
  "Währung"       : "EURO"
}

[Bearbeiten] Einsatzgebiete

  • In Verbindung mit JavaScript on Demand (JOD) oder Ajax zur Übertragung von Daten zwischen Client und Server
  • Ersatz für XML in Bereichen, wo Ressourcen (Datenvolumen, Geschwindigkeit der Übertragung) sparsam eingesetzt werden sollen. Dies gilt im Besonderen bei der Entwicklung von desktopähnlichen Webanwendungen.

[Bearbeiten] Ähnliche Technologien

Mit YAML existiert eine ähnliche Technologie. YAML ist eher an Ruby orientiert, ist aber kein ausführbarer Code. Auch hierbei handelt es sich um eine "Document Object Model"-Programmiersprache.

NextSTEP bzw. MacOS X kennt eine ähnliche Technik, um einfache Objektbäume zu laden oder zu speichern. In der entsprechenden Nomenklatur heißen sie "Property-Lists". Diese erlauben ebenfalls die Speicherung von Arrays, Zahlen, Strings, true/false, Datum und Dictionary. Entweder als XML, als kompaktes Binärformat oder als ASCII (UTF8). Genaueres findet man unter http://developer.apple.com/documentation/Cocoa/Conceptual/PropertyLists/Articles/AboutPropertyLists.html#//apple_ref/doc/uid/20001010-BBCBDBJE

[Bearbeiten] Weblinks

Persönliche Werkzeuge