Maison  >  Article  >  développement back-end  >  Comment résoudre « ERREUR DE SYNTAXE » dans JSON_DECODE() malgré le format JSON valide ?

Comment résoudre « ERREUR DE SYNTAXE » dans JSON_DECODE() malgré le format JSON valide ?

DDD
DDDoriginal
2024-10-22 22:02:29458parcourir

How to Resolve

JSON_ERROR_SYNTAX malgré un JSON valide sur les formateurs en ligne

Rencontre d'une réponse "SYNTAX ERROR" de json_decode() alors que le JSON semble valide sur les formateurs externes peut être déroutant. Voici une solution complète :

Suppression des caractères cachés :

Les caractères invisibles peuvent provoquer des erreurs de syntaxe. Supprimez ces caractères à l'aide du code suivant :

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

Décodage du JSON nettoyé :

Maintenant que les caractères masqués sont supprimés, décodez le JSON :

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

Gestion des erreurs :

Si le décodage échoue toujours, vérifiez le code d'erreur spécifique à l'aide de 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>

En suivant ces étapes, vous peut rectifier les erreurs de syntaxe JSON et décoder avec succès les données JSON. La fonction json_last_error_msg() de PHP 5.5 fournit des détails supplémentaires sur les erreurs, mais peut ne pas être nécessaire après avoir résolu les caractères cachés et les problèmes de décodage.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn