Vérifier si une chaîne contient du JSON valide avec PHP
Publié le 07/02/2024 • Actualisé le 07/02/2024
Dans ce bout de code, nous voyons comment vérifier si une chaîne contient du JSON valide avec PHP. Cette fonction a été introduite dans PHP 8.3 pour éviter d'utiliser json_decode
ou d'interception une exception quand on utilise le drapeau JSON_THROW_ON_ERROR
. La fonction json_last_error_msg
fonctionne aussi dans ce cas pour récupérer le message d'erreur exact correspondant à l'erreur de validation.
<?php
declare(strict_types=1);
namespace App\Controller\Snippet;
/**
* J'utilise un trait PHP afin d'isoler chaque snippet dans un fichier.
* Ce code doit être apellé d'un contrôleur Symfony étendant AbstractController (depuis Symfony 4.2)
* ou Symfony\Bundle\FrameworkBundle\Controller\Controller (Symfony <= 4.1).
* Les services sont injectés dans le constructeur du contrôleur principal.
*/
trait Snippet289Trait
{
public function snippet289(): void
{
$fixtures = [
// Not valid
'foo',
'{foo: bar}',
"'{'foo': 'bar'}",
'{...}',
// Valid
'"foo"',
'1',
'{"foo": "bar"}',
];
foreach ($fixtures as $string) {
if (json_validate($string)) {
echo \sprintf('YES, >%s< is a valid JSON string', $string).PHP_EOL;
echo 'decoded: '.var_export(json_decode($string), true).PHP_EOL;
} else {
echo \sprintf('NO, >%s< is NOT a valid JSON string: %s', $string, json_last_error_msg()).PHP_EOL;
}
}
// That's it! 😁
}
}
Exécuter le snippet Plus sur Stackoverflow Lire la doc Plus sur le web Snippet aléatoire