JSON_ENCODE |
Encode JSON |
---|---|
PHP 5.2.0+ |
Syntaxe
function json_encode($value, $flags = 0, $depth = 512); |
Paramètres
Nom | Description | |
---|---|---|
$value | Ce paramètre contient une représentation de la valeur à encoder en JSON. Cela peut être : un tableau (associatif ou indexé), un objet PHP, une valeur primitive comme une chaîne de caractères, un entier, un flottant, un booléen, ou même null. La fonction convertira cette valeur en une chaîne JSON. | |
$flags | Ce paramètre permet de configurer le comportement de l'encodage. Ce paramètre accepte une combinaison de constantes bitwise définissant divers comportements. Voici quelques exemples d'options possibles : | |
Valeur | Description | |
JSON_PRETTY_PRINT | Cette valeur permet de formater JSON de manière lisible avec des sauts de ligne et des indentations. | |
JSON_UNESCAPED_UNICODE | Cette valeur permet d'éviter l'échappement des caractères Unicode, ce qui permet de garder les caractères non-ASCII lisibles, comme les caractères accentués. | |
JSON_UNESCAPED_SLASHES | Cette valeur permet d'empêcher l'échappement des barres obliques (slash /) dans le JSON. Par défaut, elles sont échappées comme \/. | |
JSON_NUMERIC_CHECK | Cette valeur permet de convertir les chaînes numériques en types numériques (par exemple, "123" devient 123). | |
JSON_FORCE_OBJECT | Cette valeur permet de forcer les tableaux indexés à être convertis en objets JSON. Par défaut, les tableaux indexés sont convertis en tableaux JSON, mais avec cette option, ils sont traités comme des objets. | |
JSON_PRESERVE_ZERO_FRACTION | Cette valeur permet de conserver la partie fractionnaire des nombres flottants égaux à zéro (exemple 2.0 au lieu de 2). | |
JSON_PARTIAL_OUTPUT_ON_ERROR | Cette valeur permet d'indiquer que si une erreur se produit, json_encode retournera partiellement le JSON encodé jusqu'à l'erreur rencontrée. | |
$depth | Ce paramètre permet de déterminer la profondeur maximale des structures à encoder. Cela permet d'éviter des erreurs de dépassement de pile lors de l'encodage de structures très profondes (par exemple, des tableaux imbriqués très profondément). Par défaut, cette valeur est fixée à 512. Si vous avez des structures très profondes à encoder, vous pouvez augmenter cette valeur. |
Description
Cette fonction permet d'encoder une variable PHP (tableau, objet,...) en une chaîne JSON.
Remarques
- Simplicité d'utilisation : La fonction json_encode est très simple à utiliser. Elle permet de convertir facilement des tableaux ou des objets PHP en une chaîne JSON. Par exemple, un tableau associatif en PHP est directement converti en un objet JSON. Cela la rend très pratique pour transmettre des données structurées via des API REST.
- Gestion des caractères spéciaux : json_encode prend en charge les caractères spéciaux et peut échapper automatiquement les caractères non-ASCII. Par défaut, les caractères UTF-8 sont encodés tels quels, mais on peut forcer leur échappement en utilisant l'option JSON_UNESCAPED_UNICODE pour préserver la lisibilité.
- Les options de configuration : La fonction accepte un paramètre supplémentaire pour les options, comme JSON_PRETTY_PRINT pour formater le JSON de manière lisible ou JSON_NUMERIC_CHECK pour convertir les chaînes contenant des nombres en véritables entiers ou flottants. Cela permet d'adapter le comportement de l'encodage à des cas spécifiques.
- Compatibilité avec les objets PHP : Elle gère les objets en les convertissant automatiquement en objets JSON. Toutefois, les propriétés privées ou protégées ne sont pas incluses dans le JSON, sauf si l'objet implémente l'interface JsonSerializable et fournit une méthode jsonSerialize.
- Gestion des erreurs : Avant PHP 5.5, json_encode retournait simplement false en cas d'erreur, ce qui nécessitait des vérifications supplémentaires. À partir de PHP 5.5, il est possible d'utiliser json_last_error() pour obtenir un code d'erreur spécifique, comme JSON_ERROR_SYNTAX ou JSON_ERROR_UTF8.
- Limites sur les données : json_encode ne peut pas convertir des structures récursives (comme un tableau contenant une référence à lui-même). Dans ce cas, une erreur est générée. Il est donc important de nettoyer ou de vérifier les données avant de les encoder.
- Performances : La fonction est optimisée pour des données volumineuses. Cependant, si le tableau ou l'objet PHP est immense, l'encodage peut consommer beaucoup de mémoire et ralentir l'application. Des techniques comme la pagination ou la segmentation des données peuvent être nécessaires.
- Compatibilité avec JSON standard : json_encode respecte la norme JSON, mais certains comportements peuvent surprendre. Par exemple, les clefs de tableau numérique sont réindexées, et si elles ne sont pas continues, elles sont converties en chaînes JSON. Cela peut poser problème pour certains formats stricts.
Dernière mise à jour : Jeudi, le 16 Janvier 2025