Comment puis-je gérer de manière robuste les données JSON mal formées en PHP à l'aide de `json_decode()` ?

DDD
Libérer: 2024-11-23 11:24:11
original
709 Les gens l'ont consulté

How Can I Robustly Handle Malformed JSON Data in PHP using `json_decode()`?

Gestion des données JSON mal formées avec json_decode() de PHP

Lorsque vous travaillez avec des données JSON en PHP à l'aide de json_decode(), il est essentiel de gérer les données invalides données pour éviter des erreurs inattendues. Le code suivant illustre une approche courante :

if (!json_decode($_POST)) {
  echo "bad json data!";
  exit;
}
Copier après la connexion

Bien que cette approche fonctionne pour certains formats JSON non valides, elle ne parvient pas à détecter les erreurs si les données JSON ne sont pas une chaîne. Pour résoudre ce problème, tenez compte des informations suivantes :

  • Comportement json_decode() : Il renvoie null s'il y a une erreur, y compris lorsqu'il attend une chaîne mais reçoit un tableau.
  • Avertissements : json_decode() émet des avertissements s'il rencontre un message invalide données.

Pour gérer les deux scénarios, vous pouvez utiliser plusieurs stratégies :

  1. Supprimer les avertissements avec '@' :
$_POST = ['invalid data'];
$data = @json_decode($_POST);
Copier après la connexion

Cependant, cette méthode n'est pas recommandée car elle peut rendre le débogage difficile.

  1. Vérifiez `json_last_error()' :
if ($data === null && json_last_error() !== JSON_ERROR_NONE) {
  echo "incorrect data";
}
Copier après la connexion

Cette approche vérifie les codes d'erreur et les gère en conséquence.

  1. Personnalisé Solution :

Vous pouvez créer une fonction personnalisée pour valider les données JSON, en tenant compte à la fois des entrées JSON valides et des entrées non-chaînes.

En résumé, en tirant parti de ces techniques, vous pouvez gérer efficacement les données JSON mal formées dans vos applications PHP, garantissant ainsi une expérience plus robuste et sans erreur.

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal