#LOLPHP : json_decode

On se marre avec PHP. Comme très souvent, on découvre des trucs vraiment débiles dans la syntaxe de ce langage. Mais on oublie trop souvent de faire partager le #LOL avec les camarades. J'ouvre donc une série de posts qui seront donc taggués #LOLPHP afin de rire avec PHP. Aujourd'hui, nous allons parler de json_decode.

Je cherche à vérifier la validité d'un JSON envoyé par le client. Naïvement, je le passe à json_decode en me disant que si le JSON n'est pas valide, je me mangerais une exception que je pourrais catcher :

try
{
    json_decode($monjsonmoisi);
}
catch (\Exception $e)
{
    throw new \Exception('Ton JSON pue, connard !');
}

Et bien non, ça ne marche pas. Car si on lit la doc PHP, on apprend qu'en fait… bah un JSON moisi, ça retourne NULL et puis c'est tout. Donc "", "{[gjkzef,zeng erg" c'est la même chose une fois décodé.
Ohhhh mais heureusement, ils ont pensé à tout ! …après coup… et ils ont ajouté la méthode json_last_error. Et donc voilà :

json_decode($monjsonmoisi);

if (JSON_ERROR_SYNTAX === json_last_error())
{
    throw new \Exception('Ton JSON pue, connard !');
}

Qu'est-ce-qu'on se marre…

Hadrien

Hi, I'm a french Javascript Lead Developer, Web Architect from Toulouse, France. I've worked for 12 years for many projects with YUI, AngularJS, Aurelia.io and now React and React native.

Toulouse, France https://hadrien.eu