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!