Heim >Backend-Entwicklung >PHP-Tutorial >Warum gibt „json_decode()' von PHP bei scheinbar gültigem JSON NULL zurück?

Warum gibt „json_decode()' von PHP bei scheinbar gültigem JSON NULL zurück?

Susan Sarandon
Susan SarandonOriginal
2024-11-28 19:17:11704Durchsuche

Why Does PHP's `json_decode()` Return NULL with Seemingly Valid JSON?

PHP json_decode() gibt NULL zurück, wenn scheinbar gültiges JSON bereitgestellt wird: Eine Lösung

Beim Versuch, ein im Klartext gespeichertes JSON-Objekt zu dekodieren Beim Erstellen einer Datei mit der json_decode()-Funktion von PHP sind einige Benutzer auf das Problem gestoßen, dass die Funktion NULL zurückgibt, obwohl der JSON-Code beim Testen gültig erscheint gegen JSON-Validatoren.

Bei Betrachtung des bereitgestellten Codeausschnitts erscheint das JSON-Objekt gut formatiert. Es ist jedoch möglich, dass die Datei unsichtbare Zeichen oder Nicht-UTF-8-Zeichen enthält, die den Dekodierungsprozess stören können.

Um dieses Problem zu beheben, besteht eine von Benutzern vorgeschlagene Lösung darin, die preg_replace()-Funktion von PHP zu verwenden Entfernen Sie alle Nicht-UTF-8-Zeichen aus der JSON-Zeichenfolge. Der geänderte Code würde so aussehen:

$json_object = json_decode( preg_replace('/[\x00-\x1F\x80-\xFF]/', '', $json_string), true );

Dieser reguläre Ausdruck ersetzt alle Zeichen außerhalb des UTF-8-Zeichenbereichs durch eine leere Zeichenfolge und stellt so sicher, dass die JSON-Zeichenfolge nur gültige Zeichen enthält.

Durch Anwenden dieser Änderung sollte die json_decode()-Funktion von PHP in der Lage sein, das JSON-Objekt erfolgreich zu dekodieren und ein PHP-Objekt oder -Array zurückzugeben, das die JSON-Daten darstellt. Es wurde berichtet, dass diese Lösung bei vielen Benutzern, die mit diesem Problem konfrontiert sind, effizient funktioniert.

Das obige ist der detaillierte Inhalt vonWarum gibt „json_decode()' von PHP bei scheinbar gültigem JSON NULL zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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