En PHP comment savoir si un flux JSON contient des erreurs ?
Bonjour, j'utilise les fonctions PHP json_encode
et json_decode
pour manipuler des données JSON. Comment puis-je vérifier que ces données sont correctement formatées en JSON et qu'il n'y a pas d'erreurs ?
Par exemple comment détecter que le flux JSON suivant n'est pas correctement formaté :
['JSON mal formaté
Pour vérifier qu'un flux de données JSON est correctement formaté, en PHP, vous pouvez utiliser la CLASS JSON_THROW_ON_ERROR
.
Par défaut, json_decode()
renverra null
lorsqu'il aura passé une chaîne JSON non valide. Cela pose un problème car un null
isolé est une chaîne JSON valide. Vous n'avez aucun moyen de savoir si la valeur de retour null
est due au JSON contenant null
, ou parce que le flux JSON était mal formé et n'a pas pu être analysé.
PHP 7.3 a finalement résolu ce problème en ajoutant l'indicateur JSON_THROW_ON_ERROR
.
json_decode("['JSON mal formaté", true, 512, JSON_THROW_ON_ERROR);
Vous pouvez également utiliser les arguments nommés de PHP 8 pour simplifier un peu les choses, car vous n'aurez pas besoin de transmettre des valeurs explicites pour les paramètres facultatifs :
json_decode(json:"['JSON mal formaté", flags: JSON_THROW_ON_ERROR);
Remarque : les constantes d'erreurs PHP sont listées sur cette page, vous trouverez par ailleurs d'avantage d'informations sur JSON_THROW_ON_ERROR
via cette autre page.