Umgang mit fehlerhaften JSON-Daten mit json_decode() in PHP
Beim Umgang mit JSON-Daten mit json_decode() ist es wichtig, mit ungültigen Daten umzugehen effektiv. Während das bereitgestellte Skript fehlerhaftes JSON für Zeichenfolgen wie { bar: "baz" } erkennen kann, kann es Daten, die keine Zeichenfolgen sind, wie „ungültige Daten“, nicht verarbeiten.
Grundlegendes zu json_decode()
Um dieses Problem zu beheben, ist es wichtig, json_decode() zu verstehen:
Unterdrücken von Warnungen mit dem @-Operator
Um Warnungen zu unterdrücken, besteht eine Möglichkeit darin, den @-Operator zu verwenden. Operator:
$data = @json_decode($_POST);
Dieser Ansatz unterdrückt die Warnung, erfordert jedoch zusätzliche Prüfungen zur Behandlung von Fehlern und Nullwerten:
if ($data === null && json_last_error() !== JSON_ERROR_NONE) { echo "Incorrect data"; }
Benutzerdefinierte Fehlerbehandlung
Eine weitere Option besteht darin, ein benutzerdefiniertes Fehlerbehandlungsskript zu erstellen:
function handle_json_error() { $error = json_last_error(); switch ($error) { case JSON_ERROR_NONE: return true; case JSON_ERROR_DEPTH: echo "Maximum depth exceeded"; break; case JSON_ERROR_STATE_MISMATCH: echo "Invalid or malformed JSON"; break; case JSON_ERROR_CTRL_CHAR: echo "Control character error"; break; case JSON_ERROR_SYNTAX: echo "Syntax error"; break; case JSON_ERROR_UTF8: echo "Malformed UTF-8 characters"; break; default: echo "Unknown error"; } return false; } if (!handle_json_error()) { echo "Bad JSON data!"; }
Dieses Skript stellt detaillierte Fehlermeldungen bereit und behandelt verschiedene JSON-Parsing-Fehler.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3