Voici un exemple de script PHP qui vérifie si une chaîne de caractères est valide en JSON et renvoie une erreur si elle ne l’est pas :
<?php
// La chaîne à tester
$json_string = '{"name":"John Smith","age":35,"city":"New York"}';
// Tester si la chaîne est valide en JSON
json_decode($json_string);
if (json_last_error() == JSON_ERROR_NONE) {
echo 'La chaîne est valide en JSON.';
} else {
echo 'La chaîne n\'est pas valide en JSON. Erreur: ';
switch (json_last_error()) {
case JSON_ERROR_DEPTH:
echo 'profondeur maximale atteinte';
break;
case JSON_ERROR_STATE_MISMATCH:
echo 'erreur de fragmentation';
break;
case JSON_ERROR_CTRL_CHAR:
echo 'caractère de contrôle inattendu';
break;
case JSON_ERROR_SYNTAX:
echo 'erreur de syntaxe';
break;
case JSON_ERROR_UTF8:
echo 'caractères UTF-8 malformés';
break;
default:
echo 'erreur inconnue';
break;
}
}
?>
La fonction json_decode
est utilisée pour décoder la chaîne en JSON. Si la chaîne est valide, elle renvoie un objet PHP, sinon elle renvoie NULL.
La fonction json_last_error
permet de connaitre le dernier code d’erreur rencontré lors de l’utilisation de json_decode ou json_encode, si elle retourne JSON_ERROR_NONE cela signifie qu’il n’y a pas eu d’erreur.
En utilisant un switch, on peut ensuite identifier le type d’erreur rencontrée pour l’afficher pour une meilleure compréhension pour l’utilisateur.