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:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
{ "Name": "Mustermann", "Vorname": "Max", "Alter": 24, "Funktion": { "Bezeichnung": "Webseitenentwickler", "Programmiersprachen": ["PHP","JavaScript","HTML"], "Berufserfahrungsjahre": 2, "eingearbeitet": true, "Partner": null } } |
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 istfalse
: Wenn der Wert auffalse
, so wird ein Objektbaum zurückgegeben. Steht er auftrue
so wird ein Array erstellt.depth
Defaultwert ist512
: Gibt die maximale Tiefe an, in der geparst wird. Wird diese Tiefe überschritten, so ist dies ein Fehler.options
: Aktuell wird nurJSON_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. MitJSON_NUMERIC_CHECK
werden numerische Strings umgeformt. MitJSON_PRETTY_PRINT
erhält man eine eingerückte Ausgabe. depth
Der Defaultwert ist wieder512
: 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 JSONJSON_ERROR_STATE_MISMATCH
: Falsches JSONJSON_ERROR_RECURSION
:Kodierung konnte aufgrund von Zirkeln im Objektbaum nicht durchgeführt werden.JSON_ERROR_INF_OR_NAN
oderJSON_ERROR_UNSUPPORTED_TYPE
: Nicht kodierbare Variablen.