Heim > Backend-Entwicklung > PHP-Tutorial > Wie erkennt man zuverlässig fehlerhafte JSON-Daten in PHP mit „json_decode()'?

Wie erkennt man zuverlässig fehlerhafte JSON-Daten in PHP mit „json_decode()'?

Linda Hamilton
Freigeben: 2024-11-19 14:05:02
Original
293 Leute haben es durchsucht

How to Reliably Detect Malformed JSON Data in PHP Using `json_decode()`?

So erkennen Sie fehlerhafte JSON-Daten mithilfe der JSON-Dekodierung in PHP

Beim Versuch, JSON-Daten mit json_decode() zu analysieren, kommt es zur Behandlung ungültiger Formate entscheidend für die Gewährleistung der Datenintegrität. Obwohl diese Funktion im Allgemeinen effektiv ist, kann es bei der Verarbeitung bestimmter Eingabetypen zu Inkonsistenzen kommen.

Problemszenario

Stellen Sie sich das folgende Szenario vor:

if(!json_decode($_POST)) {
  echo "bad json data!";
  exit;
}
Nach dem Login kopieren

Dieses Skript zielt darauf ab, ungültige JSON-Daten zu erkennen und zu verarbeiten. Wenn $_POST jedoch ein gültiges JSON-Format enthält (z. B. { bar: „baz“ }), behandelt json_decode() den Fehler korrekt und zeigt „schlechte JSON-Daten!“ an. Wenn $_POST jedoch auf ein ungültiges Format eingestellt ist (z. B. „ungültige Daten“), wird eine unerwartete Warnung ausgelöst, gefolgt von „schlechte JSON-Daten!“:

Warning: json_decode() expects parameter 1 to be string, array given in ...
bad json data!
Nach dem Login kopieren

Benutzerdefinierte Erkennung oder Alternative Lösung?

Um dieses Problem zu beheben, können Entwickler erwägen, ein benutzerdefiniertes Skript zu schreiben, um gültige JSON-Daten zu erkennen oder andere verfügbare Optionen zu erkunden.

Lösung mit JSON-Dekodierungsfunktionen:

Bei der JSON-Dekodierung sind mehrere wichtige Merkmale zu berücksichtigen:

  • Sie gibt die analysierten Daten oder im Fehlerfall Null zurück.
  • Sie kann auch zurückgegeben werden null für einen gültigen Fall, in dem die JSON-Zeichenfolge null enthält.
  • Es werden Warnungen für bestimmte Fehler ausgelöst.

Um das Warnproblem zu verhindern, kann der @-Operator verwendet werden (obwohl seine Verwendung wird aufgrund möglicher Debugging-Schwierigkeiten nicht empfohlen). Dieser Operator unterdrückt die Warnung, lässt aber weiterhin zu, dass das Skript weiterhin ausgeführt wird.

$_POST = array('bad data');
$data = @json_decode($_POST);
Nach dem Login kopieren

Nachdem die Warnung unterdrückt wurde, muss überprüft werden, ob $data null ist. Um zwischen einem ungültigen Format und einem gültigen Nullwert zu unterscheiden, kann json_last_error() verwendet werden. Diese Funktion gibt den aktuellsten JSON-Parsing-Fehler zurück, falls vorhanden.

if ($data === null && json_last_error() !== JSON_ERROR_NONE) {
    echo "incorrect data";
}
Nach dem Login kopieren

Durch die Kombination dieser Techniken können wir ungültige JSON-Daten in PHP mithilfe von json_decode() effektiv erkennen und verarbeiten.

Das obige ist der detaillierte Inhalt vonWie erkennt man zuverlässig fehlerhafte JSON-Daten in PHP mit „json_decode()'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage