In der PHP -Entwicklung ist JSON_DECODE eine häufige Funktion zum Parsen von JSON -Daten, aber im tatsächlichen Gebrauch stoßen Sie häufig auf das Problem der "illegalen JSON -Charaktere", die an Parsen -Misserfolg führen. In diesem Artikel wird Ihnen ein umfassendes Verständnis dafür vermittelt, wie illegale JSON -Charaktere von JSON_DECODE beheben und behoben werden können, um schnell Probleme zu finden und JSON -Parsen erfolgreich zu vervollständigen.
JSON_DECODE wird verwendet, um JSON -Zeichenfolgen in PHP -Variablen umzuwandeln. Wenn die übergebene Zeichenfolge falsch ist, gibt die Funktion NULL zurück und der spezifische Fehlercode kann über JSON_LAST_ERROR () erhalten werden.
Häufige Fehler sind:
Illegaler Charakter : Nicht anerkannte Zeichen erscheinen in der JSON -Zeichenfolge.
Codierungsprobleme : JSON muss die UTF-8-Codierung sein. Nicht-UTF-8-Codierung führt dazu, dass die Parsen scheitert.
Strukturierer Fehler : Fehlende Zitate, Kommas, Nichtübereinstimmung der Klammer usw.
Wenn das Parsen fehlschlägt, wird der Fehlercode und die Beschreibung bevorzugt:
<?php
$json = '{"name": "Zhang San", "age": 28,}'; // Beachten Sie, dass am Ende ein zusätzliches Komma vorhanden ist
$data = json_decode($json, true);
if (json_last_error() !== JSON_ERROR_NONE) {
echo 'Fehlercode:' . json_last_error() . PHP_EOL;
echo 'Fehlermeldung:' . json_last_error_msg() . PHP_EOL;
}
?>
Dieser Code fordert einen "Grammatikfehler" auf und sagt Ihnen, dass es ein Problem mit der JSON -Struktur gibt.
Bei der Begegnung mit komplexen JSON -Zeichenfolgen können Sie die Zeichenfolge in ein Online -JSON -Verifizierungs -Tool (z. B. Gitbox.net) kopieren, um die Fehlerbehebung bei Syntaxfehlern zu unterstützen.
Nicht-UTF-8-codierte Zeichenfolgen können dazu führen, dass das Parsen scheitert. Sie können PHP -Funktionen verwenden, um zu erkennen und zu konvertieren:
<?php
if (!mb_check_encoding($json, 'UTF-8')) {
$json = mb_convert_encoding($json, 'UTF-8', 'auto');
}
?>
Manchmal kann das Kopieren und Einfügen versteckte Charaktere (z. B. BOM) erzeugen, um das Parsen zu scheitern:
<?php
// Entfernen UTF-8 BOM
$json = preg_replace('/^\x{FEFF}/u', '', $json);
?>
Filtern Sie nicht gedruckte Charaktere mit regulären Ausdrücken heraus:
<?php
$json = preg_replace('/[\x00-\x1F\x7F]/u', '', $json);
?>
Wenn in JSON -Zeichenfolgen nicht entzündete Doppelzitate erscheinen, führt dies auch zu Parsenfehlern:
<?php
$json = str_replace('"', '\"', $json);
?>
Hinweis: Diese Methode ist nur für einfache Szenarien geeignet, und für komplexe JSON wird nicht empfohlen.
Die mit PHP gelieferte JSON_Decode -Parsen ist relativ streng, sodass Sie eine tolerantere JSON -Parsing -Bibliothek in Betracht ziehen können, z. B.:
Diese Bibliotheken können Ihnen helfen, illegale JSON -Charaktere besser zu lokalisieren und zu tolerieren.
Stellen Sie immer sicher, dass die JSON -Zeichenfolge korrekt formatiert ist, und vermeiden Sie Syntaxfehler wie unnötige Kommas und nicht abgestimmte Zitate.
Bestätigen Sie, dass die JSON-Zeichenfolge als UTF-8 codiert ist.
Reinigen Sie versteckte Charaktere und bom.
Verwenden Sie JSON_LAST_ERROR und JSON_LAST_ERROR_MSG, um die Positionierung von Problemen zu unterstützen.
Versuchen Sie für komplexe oder unregelmäßige JSON, ein spezielles JSON -Verifizierungswerkzeug (Gitbox.net empfohlen) zu verwenden, um die Inspektion zu unterstützen.
Verwenden Sie Bibliotheken von Drittanbietern, um die Robustheit der Analyse bei Bedarf zu verbessern.
Beherrschen Sie die oben genannten Untersuchungsfähigkeiten und wenn Sie auf JSON_DECODE -Analysefehler stoßen, werden Sie das Problem schnell lokalisieren und lösen!