Maison  >  Article  >  développement back-end  >  Comment résoudre les erreurs \"JSON_ERROR_SYNTAX\" dans le décodage JSON

Comment résoudre les erreurs \"JSON_ERROR_SYNTAX\" dans le décodage JSON

DDD
DDDoriginal
2024-10-23 00:52:30298parcourir

How to Resolve

Erreur de syntaxe de décodage JSON : dévoilement de la cause cachée

Lorsque vous travaillez avec des services Web JSON, il est courant de rencontrer l'énigmatique erreur "JSON_ERROR_SYNTAX" lorsque tenter de décoder les données JSON à l'aide de json_decode(). Ce message d'erreur fournit un aperçu minimal du problème réel, laissant les développeurs frustrés.

L'un des coupables potentiels de cette erreur frustrante réside dans les caractères cachés invisibles dans les données JSON. Pour résoudre ce problème, le code suivant offre une solution robuste :

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

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

    // Check for 'efbbbf' byte order mark (BOM)
    if (0 === strpos(bin2hex($data), 'efbbbf')) {
        $data = substr($data, 3);
    }

    $obj = json_decode($data);

    switch (json_last_error()) {
        case JSON_ERROR_NONE:
            echo ' - JSON_ERROR_NONE';
            break;
        // ... other cases
        case JSON_ERROR_SYNTAX:
            echo "\r\n\r\n - SYNTAX ERROR \r\n\r\n";
            break;
    }
}</code>

Cette solution effectue un nettoyage approfondi des données JSON, en supprimant les caractères masqués et les marques d'ordre d'octet (BOM) qui peuvent interférer avec le bon décodage. En éliminant ces obstacles invisibles, les développeurs peuvent obtenir un message d'erreur plus informatif ou réussir à décoder leurs données JSON, réduisant ainsi le cauchemar des erreurs de syntaxe cryptiques.

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