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!