ursus contionabundo: json_encode(), json_decode(), json_last_error()

Beitrag lesen

Bleib doch beim JSON. Den musst Du nur umbauen, daß da Zeilenumbrüche drin sind. In JS geht das z.B. mit JSON.stringify(array,null,2) und in PHP gibts da sicher Ahnliches.

Aber ja doch! Das Handbuch sagt:

$string = json_encode( $mixed, JSON_PRETTY_PRINT );

will man Unicode-Zeichen zusätzlich nicht escapen, dann geht auch:

$string = json_encode( $mixed, JSON_PRETTY_PRINT + JSON_UNESCAPED_UNICODE );

Mit json_decode() in Variable einlesen:

$mixed = json_decode( $string );

Will man auf Fehler überprüfen, dann hat man mit json_last_error() und json_last_error_msg() "zauberhafte" Möglichkeiten dazu.

Allerdings sollte ich nicht verschweigen, dass das Herumeditieren in JSON-Code im Hinblick auf die Syntax und also der Fehlerträchtigkeit manueller Bearbeitung auch nicht "das Wahre" ist. Man sollte die Aufgabe überprüfen und schauen, ob man nicht mit "normalen Formularen" und den üblichen Methoden zum Bearbeiten von Inhalten von Arrays oder dergleichen besser wegkommt.

Zumindest bei der Anwendung von json_decode( $string ); sollte also unbedingt mit

$mixed = json_decode( $string );
if ( ! JSON_ERROR_NONE === json_last_error() ) {
   #Fehlerbearbeitung
}

auf mögliche Fehler getestet und (unbedingt) zusätzlich eine Plausibilitätsprüfung der erhaltenen Daten stattfinden. Letzteres treibt den Aufwand dann so hoch, dass man auch gleich "was richtiges" schreiben kann.

Weitere Alternative: YAML.