Heim  >  Artikel  >  Backend-Entwicklung  >  Wie behebe ich „SYNTAX ERROR“ in JSON_DECODE() trotz gültigem JSON-Format?

Wie behebe ich „SYNTAX ERROR“ in JSON_DECODE() trotz gültigem JSON-Format?

DDD
DDDOriginal
2024-10-22 22:02:29458Durchsuche

How to Resolve

JSON_ERROR_SYNTAX trotz gültigem JSON auf Online-Formatierern

Es wird eine „SYNTAX ERROR“-Antwort von json_decode() festgestellt, während das JSON auf externen Formatierern gültig erscheint kann rätselhaft sein. Hier ist eine umfassende Lösung:

Entfernung versteckter Zeichen:

Unsichtbare Zeichen können Syntaxfehler verursachen. Entfernen Sie diese Zeichen mit dem folgenden Code:

<code class="php">$json = file_get_contents('http://www.mywebservice');

// Remove unwanted characters
for ($i = 0; $i <= 31; ++$i) { $json = str_replace(chr($i), "", $json); }
$json = str_replace(chr(127), "", $json);

// Handle BOM (Byte Order Mark)
if (0 === strpos(bin2hex($json), 'efbbbf')) { $json = substr($json, 3); }</code>

Dekodierung des bereinigten JSON:

Da nun die versteckten Zeichen entfernt wurden, dekodieren Sie den JSON:

<code class="php">$obj = json_decode($json);</code>

Fehlerbehandlung:

Wenn die Dekodierung immer noch fehlschlägt, überprüfen Sie den spezifischen Fehlercode mit json_last_error():

<code class="php">switch (json_last_error()) {
    case JSON_ERROR_NONE:
        echo 'JSON_ERROR_NONE';
        break;
    case JSON_ERROR_DEPTH:
        echo 'JSON_ERROR_DEPTH';
        break;
    // ... Other error codes
    default:
        echo 'Unknown Error';
        break;
}</code>

Wenn Sie diese Schritte befolgen, können Sie kann JSON-Syntaxfehler beheben und JSON-Daten erfolgreich dekodieren. Die json_last_error_msg()-Funktion von PHP 5.5 bietet zusätzliche Fehlerdetails, ist jedoch möglicherweise nicht erforderlich, nachdem versteckte Zeichen und Dekodierungsprobleme behoben wurden.

Das obige ist der detaillierte Inhalt vonWie behebe ich „SYNTAX ERROR“ in JSON_DECODE() trotz gültigem JSON-Format?. 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