< Programmation PHP
json_encode() sur une instance de classe n'en n'affiche que les attributs publics. Pour encoder les privés, il faut que la classe implémente
Par défaut json_encode() échappe les caractères spéciaux non ASCII (ex : "é" devient "\u00e9"). Pour éviter cela on utilise l'option suivante :
Il requiert PHPUnit.phpTélécharger.
Bibliothèque PHP-JSON
Le format de données JavaScript Object Notation (JSON) peut être utilisé en PHP grâce à différentes fonctions natives depuis PHP 5.2.0.
Installation (pour PHP < 5.2)
Linux
apt-get install php5-json
Windows
- Télécharger le fichier json-1.2.1.tgz sur https://pecl.php.net/package/json.
- Décompresser et compiler le code source en json.so.
- Le copier dans le dossier des extensions PHP.
- Dans le php.ini (ex : C:\Program Files (x86)\EasyPHP\binaries\php\php_runningversion\php.ini), ajouter :
extension=json.so
json_encode()
Cette fonction convertit un objet PHP en JSON exploitable en JavaScript[1]. Ex :
$tableau = array('colonne 1' => 'valeur 1', 'colonne 2' => 'valeur 2', 'colonne 3' => 'valeur 3');
echo json_encode($tableau);
{"colonne 1":"valeur 1","colonne 2":"valeur 2","colonne 3":"valeur 3"}
![Logo](../../I/OOjs_UI_icon_alert-warning.svg.png.webp)
JsonSerializable
en qui impose une méthode jsonSerialize()[2]. Ex :
public function jsonSerialize() {
return $this->array;
}
Options
![Logo](../../I/OOjs_UI_icon_alert-warning.svg.png.webp)
$a = json_encode($monTableau, JSON_UNESCAPED_UNICODE);
Par ailleurs, les erreurs de json_encode() sont accessible avec json_last_error()
ou json_last_error_msg()
. Ex :
$a = json_encode($monTableau);
if (json_last_error() === JSON_ERROR_INF_OR_NAN) {
$this->logger->error(json_last_error_msg());
$a = json_encode($monTableau, JSON_PARTIAL_OUTPUT_ON_ERROR);
}
json_decode()
Convertit une chaine de caractères JSON en :
- Si aucun paramètre 2 n'est passé, un objet PHP dont chaque attribut correspond à une clé du tableau.
- Si le paramètre 2 vaut "true", un tableau associatif[3].
La gestion des erreurs est similaire à celle de json_encode()
.
PEAR Services_JSON
Le framework PEAR possède aussi un package Services_JSON contenant des .php avec des exemples, à télécharger en tant que JSON.tar.gz sur http://pear.php.net/pepr/pepr-proposal-show.php?id=198.
![Logo](../../I/OOjs_UI_icon_alert-warning.svg.png.webp)
La classe Services_JSON de JSON.php peut s'utiliser comme décrit dans Test-JSON.php.
Références
Cet article est issu de Wikibooks. Le texte est sous licence Creative Commons - Attribution - Partage dans les Mêmes. Des conditions supplémentaires peuvent s'appliquer aux fichiers multimédias.