Position actuelle: Accueil> Derniers articles> Comment gérer les caractères JSON illégaux dans json_decode

Comment gérer les caractères JSON illégaux dans json_decode

gitbox 2025-05-29

Dans le développement de PHP, JSON_DECODE est une fonction commune pour l'analyse des données JSON, mais dans une utilisation réelle, vous rencontrez souvent le problème des "caractères JSON illégaux" provoquant une défaillance d'analyse. Cet article vous donnera une compréhension complète de la façon de dépanner et de résoudre les personnages JSON illégaux rencontrés par JSON_DECODE , vous aidant à localiser rapidement les problèmes et à compléter avec succès l'analyse JSON.


1. JSON_DECODE BASICS ET ERREURS COMMUNES

JSON_DECODE est utilisé pour convertir les chaînes JSON en variables PHP. Si la chaîne passée est incorrecte, la fonction renvoie NULL et le code d'erreur spécifique peut être obtenu via JSON_LAST_ERROR () .

Les erreurs courantes comprennent:

  • Caractère illégal : les caractères non reconnus apparaissent dans la chaîne JSON.

  • Problèmes de codage : JSON doit être un codage UTF-8, le codage non UTF-8 entraînera l'échec de l'analyse.

  • Erreur structurelle : citations manquantes, virgules, décalage du support, etc.


2. Comment dépanner les personnages JSON illégaux

2.1 Afficher le code d'erreur et les informations d'erreur

Lorsque l'analyse échoue, le code d'erreur et la description sont préférés:

 <?php
$json = '{"name": "Zhang San", "age": 28,}'; // Notez qu&#39;il y a une virgule supplémentaire à la fin
$data = json_decode($json, true);
if (json_last_error() !== JSON_ERROR_NONE) {
    echo 'Code d&#39;erreur:' . json_last_error() . PHP_EOL;
    echo 'message d&#39;erreur:' . json_last_error_msg() . PHP_EOL;
}
?>

Ce code provoquera une "erreur de grammaire" et vous dira qu'il y a un problème avec la structure JSON.

2.2 Utilisez des outils en ligne pour aider à la vérification

Lorsque vous rencontrez des chaînes JSON complexes, vous pouvez copier la chaîne sur un outil de vérification JSON en ligne (tel que gitbox.net) pour aider à dépanner les erreurs de syntaxe.


3. Concentrez-vous sur l'étude des personnages illégaux et des problèmes de codage

3.1 Confirmez le codage des chaînes à UTF-8

Les chaînes codées non UTF-8 peuvent faire échouer l'analyse. Vous pouvez utiliser des fonctions PHP pour détecter et convertir:

 <?php
if (!mb_check_encoding($json, 'UTF-8')) {
    $json = mb_convert_encoding($json, 'UTF-8', 'auto');
}
?>

3.2 Nettoyage des caractères cachés ou de la bom

Parfois, la copie et le collage produisent des personnages cachés (comme BOM) peuvent faire échouer l'analyse:

 <?php
// Retirer UTF-8 BOM
$json = preg_replace('/^\x{FEFF}/u', '', $json);
?>

3.3 Filtrage des caractères invisibles

Filtrez des caractères non imprimés avec des expressions régulières:

 <?php
$json = preg_replace('/[\x00-\x1F\x7F]/u', '', $json);
?>

4. Gérer les caractères spéciaux et les évasions

4.1 Échapper aux doubles citations

Si des citations doubles non réessées apparaissent dans JSON Strings, cela entraînera également des erreurs d'analyse:

 <?php
$json = str_replace('"', '\"', $json);
?>

Remarque: Cette méthode ne convient que pour des scénarios simples, et le remplacement aveugle n'est pas recommandé pour JSON complexe.


5. Utilisez des bibliothèques tierces pour améliorer la tolérance aux défauts

L'analyse JSON_DECODE qui est livrée avec PHP est relativement stricte, vous pouvez donc envisager d'utiliser une bibliothèque d'analyse JSON plus tolérante, telle que:

Ces bibliothèques peuvent vous aider à mieux localiser et tolérer des personnages JSON illégaux.


6. Résumé et meilleures pratiques

  • Assurez-vous toujours que la chaîne JSON est formatée correctement et évitez les erreurs de syntaxe telles que les virgules inutiles et les citations non clôturées.

  • Confirmez que la chaîne JSON est codée en tant que UTF-8.

  • Nettoyez des personnages cachés et bom.

  • Utilisez JSON_LAST_ERROR et JSON_LAST_ERROR_MSG pour aider à positionner les problèmes.

  • Pour JSON complexe ou irrégulier, essayez d'utiliser un outil de vérification JSON spécial (Gitbox.net recommandé) pour aider à l'inspection.

  • Utilisez des bibliothèques tierces pour améliorer la robustesse de l'analyse si nécessaire.

Maîtrisez les compétences d'enquête ci-dessus et lorsque vous rencontrez JSON_DECODE Analyse de l'analyse, vous serez à l'aise, localisez rapidement et résolvez le problème!