Maison >développement back-end >tutoriel php >Pourquoi `json_decode()` renvoie-t-il NULL pour un JSON valide ?

Pourquoi `json_decode()` renvoie-t-il NULL pour un JSON valide ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-27 10:23:14436parcourir

Why Does `json_decode()` Return NULL for Valid JSON?

json_decode() renvoie NULL pour un JSON valide : dépannage

Lors d'une tentative de décodage de données JSON à l'aide de json_decode(), les développeurs peuvent rencontrer des cas où la fonction renvoie NULL bien que le JSON soit apparemment valide. Ce problème peut être particulièrement déroutant lorsque le JSON réussit la validation par les validateurs JSON en ligne. Pour comprendre pourquoi cela se produit et le résoudre efficacement, examinons le problème et sa solution.

Caractères invalides dans la chaîne JSON

Une cause courante de ce problème est la présence de caractères invalides dans la chaîne JSON. Alors que la plupart des validateurs JSON les ignorent, la fonction json_decode() de PHP peut se terminer brusquement lorsqu'elle rencontre de tels caractères. Ces caractères non valides vont généralement de 0x00 à 0x1F et de 0x80 à 0xFF.

Solution : suppression des caractères non valides

Pour résoudre ce problème, vous pouvez utiliser la fonction preg_replace() pour supprimer tous les caractères invalides de la chaîne JSON avant de tenter de la décoder. Le code suivant montre comment procéder :

$json_string = preg_replace('/[\x00-\x1F\x80-\xFF]/', '', $json_string);

Cette expression régulière supprime tous les caractères entre 0x00 et 0x1F, ainsi que les caractères entre 0x80 et 0xFF, filtrant ainsi les caractères non valides.

Vrais tableaux associatifs

Un autre problème qui peut causer json_decode() pour renvoyer NULL, c'est lorsque vous vous attendez à ce que le résultat soit un véritable tableau associatif, mais que PHP l'interprète comme un objet. Cela peut se produire lorsque la chaîne JSON contient des clés de propriété qui ne sont pas placées entre guillemets.

Pour vous assurer que le résultat est un véritable tableau associatif, vous pouvez utiliser le deuxième paramètre de json_decode() et le définir sur true. . Cela forcera le résultat à être un tableau associatif plutôt qu'un objet. Voici un exemple :

$json_data = json_decode($json_string, true);

En utilisant ces solutions, vous pouvez résoudre efficacement le problème de json_decode() renvoyant NULL pour des données JSON apparemment valides, vous permettant ainsi d'analyser et d'utiliser avec succès les données JSON dans vos applications PHP. .

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!

Déclaration:
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