JSON und AJAX

Die Abkürzung JSON steht für Javascript Object Notation. Es stellt ähnlich wie XML ein Datenaustauschformat dar. Man kann sich nun fragen, wieso man ein zweites Datenaustauschformat benötigt. Die Antwort auf diese Frage ist einfach. JSON lässt sich von einer JavaScript-Engine, wie sie in jedem Webbrowser läuft, direkt ohne den nutzen einer Bibliothek lesen, da es sich selbst um JavaScript-Code handelt, der einen Baum von Arrays im Speicher aufbaut. Um nun Übertragungszeit zu sparen, wird keine XML-Bibliothek an den Client verschickt, sondern die Daten werden direkt in einem JavaScript-lesbaren Format erstellt. Dies läutete den Siegeszug dieser Datenbeschreibung ein, weshalb diese heutzutage in jeder JavaScript-Anwendung im Einsatz ist.

Ein Beispiel für ein JSON-Dokument wird weiter unten gezeigt. Es zeigt Integer- und String-Definitionen. Weiterhin kann dem Beispieldokument auch entnommen werden, wie boolsche Variablen festgelegt werden und wie NULL-Werte signalisiert werden. Mit geschweiften Klammern ({}) wird ein Objekt definiert. Die eckigen Klammern ([]) sorgen dafür, dass ein Array interpretiert wird:

Mit Hilfe der Funktion json_decode() lässt sich ein JSON-String in eine PHP-Variable umformen. Dabei werden der Funktion eine Reihe von Parametern übergeben:

  • json: Der JSON-String, welcher umgeformt werden soll.
  • assoc Defaultwert ist false: Wenn der Wert auf false, so wird ein Objektbaum zurückgegeben. Steht er auf true so wird ein Array erstellt.
  • depth Defaultwert ist 512: Gibt die maximale Tiefe an, in der geparst wird. Wird diese Tiefe überschritten, so ist dies ein Fehler.
  • options: Aktuell wird nur JSON_BIGINT_AS_STRING unterstützt.

Mit der Funktion json_encode() kann eine PHP-Struktur in ein JSON-Dokument überführt werden. Die Parameter sind wie folgt:

  • value: Die Struktur, die in ein JSON-Dokument umgeformt werden soll. Nur Ressourcen sind hier nicht erlaubt.
  • options: Hier können Optionen übergeben werden, die das Aussehen des JSON verändern. Beispielsweise kann PHP angewiesen werden, bestimmte Zeichen zu encodieren.
  • Mit JSON_FORCE_OBJECT werden Arrays in JSON-Objekte umgeformt. Mit JSON_NUMERIC_CHECK werden numerische Strings umgeformt. Mit JSON_PRETTY_PRINT erhält man eine eingerückte Ausgabe.
  • depth Der Defaultwert ist wieder 512: Hiermit wird angegeben, wie tief PHP in die Struktur maximal einsteigen soll, um das Dokument zu erstellen.

Mit json_last_error() lässt sich der Fehlercode des letzten Fehlers ausgeben. Mit Hilfe folgender Konstanten lässt sich der Fehler dann feststellen:

  • JSON_ERROR_DEPTH: Es wurde abgebrochen, weil die maximale Stacktiefe erreicht war.
  • JSON_ERROR_CTRL_CHAR: Steuerzeichenfehler. Vermutlich falsches Encoding.
  • JSON_ERROR_UTF8: UTF-8 nicht dekodierbar.
  • JSON_ERROR_SYNTAX: Syntaxfehler im JSON
  • JSON_ERROR_STATE_MISMATCH: Falsches JSON
  • JSON_ERROR_RECURSION:Kodierung konnte aufgrund von Zirkeln im Objektbaum nicht durchgeführt werden.
  • JSON_ERROR_INF_OR_NAN oder JSON_ERROR_UNSUPPORTED_TYPE: Nicht kodierbare Variablen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert