Heim >Backend-Entwicklung >PHP-Tutorial >Warum gibt „json_decode()' NULL für gültiges JSON zurück?

Warum gibt „json_decode()' NULL für gültiges JSON zurück?

Susan Sarandon
Susan SarandonOriginal
2024-11-27 10:23:14433Durchsuche

Why Does `json_decode()` Return NULL for Valid JSON?

json_decode() gibt NULL für gültiges JSON zurück: Fehlerbehebung

Beim Versuch, JSON-Daten mit json_decode() zu dekodieren, können Entwickler auf Fälle stoßen, in denen Die Funktion gibt NULL zurück, obwohl das JSON scheinbar gültig ist. Dieses Problem kann besonders rätselhaft sein, wenn der JSON die Validierung durch Online-JSON-Validatoren besteht. Um zu verstehen, warum dies auftritt, und um es effektiv zu lösen, schauen wir uns das Problem und seine Lösung genauer an.

Ungültige Zeichen in der JSON-Zeichenfolge

Eine häufige Ursache für dieses Problem ist das Vorhandensein ungültiger Zeichen in der JSON-Zeichenfolge. Während die meisten JSON-Validatoren sie ignorieren, kann die json_decode()-Funktion von PHP abrupt beendet werden, wenn sie auf solche Zeichen trifft. Diese ungültigen Zeichen reichen typischerweise von 0x00 bis 0x1F und 0x80 bis 0xFF.

Lösung: Ungültige Zeichen entfernen

Um dieses Problem zu beheben, können Sie die Funktion preg_replace() verwenden um alle ungültigen Zeichen aus der JSON-Zeichenfolge zu entfernen, bevor Sie versuchen, sie zu dekodieren. Der folgende Code zeigt, wie das geht:

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

Dieser reguläre Ausdruck entfernt alle Zeichen zwischen 0x00 und 0x1F sowie Zeichen zwischen 0x80 und 0xFF und filtert so effektiv die ungültigen Zeichen heraus.

Echte assoziative Arrays

Ein weiteres Problem, das verursachen kann json_decode() gibt NULL zurück, wenn Sie erwarten, dass das Ergebnis ein echtes assoziatives Array ist, PHP es jedoch als Objekt interpretiert. Dies kann passieren, wenn die JSON-Zeichenfolge Eigenschaftsschlüssel enthält, die nicht in doppelte Anführungszeichen gesetzt sind.

Um sicherzustellen, dass das Ergebnis ein echtes assoziatives Array ist, können Sie den zweiten Parameter von json_decode() verwenden und ihn auf true setzen . Dadurch wird erzwungen, dass das Ergebnis ein assoziatives Array und kein Objekt ist. Hier ist ein Beispiel:

$json_data = json_decode($json_string, true);

Durch den Einsatz dieser Lösungen können Sie das Problem, dass json_decode() für scheinbar gültige JSON-Daten NULL zurückgibt, effektiv lösen, sodass Sie die JSON-Daten erfolgreich analysieren und in Ihren PHP-Anwendungen verwenden können .

Das obige ist der detaillierte Inhalt vonWarum gibt „json_decode()' NULL für gültiges JSON 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