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.assocDefaultwert istfalse: Wenn der Wert auffalse, so wird ein Objektbaum zurückgegeben. Steht er auftrueso wird ein Array erstellt.depthDefaultwert 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_STRINGunterstü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_OBJECTwerden Arrays in JSON-Objekte umgeformt. MitJSON_NUMERIC_CHECKwerden numerische Strings umgeformt. MitJSON_PRETTY_PRINTerhält man eine eingerückte Ausgabe. depthDer 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_NANoderJSON_ERROR_UNSUPPORTED_TYPE: Nicht kodierbare Variablen.
