Maison >développement back-end >tutoriel php >Comment détecter de manière fiable les données JSON mal formées en PHP à l'aide de « json_decode() » ?
Comment détecter des données JSON mal formées à l'aide du décodage JSON en PHP
Lors de la tentative d'analyse de données JSON à l'aide de json_decode(), la gestion des formats non valides est crucial pour garantir l’intégrité des données. Bien que cette fonction soit généralement efficace, elle peut présenter des incohérences lors de la gestion de certains types d'entrée.
Scénario de problème
Considérez le scénario suivant :
if(!json_decode($_POST)) { echo "bad json data!"; exit; }
Ce script vise à détecter et gérer les données JSON invalides. Cependant, lorsque $_POST contient un format JSON valide (par exemple, { bar: "baz" }), json_decode() gère correctement l'erreur, affichant "mauvaises données json !". Cependant, lorsque $_POST est défini sur un format non valide (par exemple, « données non valides »), un avertissement inattendu est généré, suivi de « données json incorrectes ! » :
Warning: json_decode() expects parameter 1 to be string, array given in ... bad json data!
Détection personnalisée ou Solution alternative ?
Pour résoudre ce problème, les développeurs peuvent envisager d'écrire un script personnalisé pour détecter les données JSON valides ou explorer d'autres scripts disponibles. options.
Solution utilisant les fonctionnalités de décodage JSON :
Le décodage JSON présente plusieurs caractéristiques clés à prendre en compte :
Pour éviter le problème d'avertissement, l'opérateur @ peut être utilisé (bien que son utilisation soit déconseillée en raison de difficultés potentielles de débogage). Cet opérateur supprime l'avertissement tout en permettant au script de poursuivre son exécution.
$_POST = array('bad data'); $data = @json_decode($_POST);
Après avoir supprimé l'avertissement, il est nécessaire de vérifier si $data est nul. Pour faire la différence entre un format invalide et une valeur nulle valide, json_last_error() peut être utilisé. Cette fonction renvoie l'erreur d'analyse JSON la plus récente, le cas échéant.
if ($data === null && json_last_error() !== JSON_ERROR_NONE) { echo "incorrect data"; }
En combinant ces techniques, nous pouvons détecter et gérer efficacement les données JSON invalides en PHP à l'aide de json_decode().
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!