Bibliothèque PHP-JSON

modifier

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)

modifier
apt-get install php5-json

Windows

modifier
  1. Télécharger le fichier json-1.2.1.tgz sur https://pecl.php.net/package/json.
  2. Décompresser et compiler le code source en json.so.
  3. Le copier dans le dossier des extensions PHP.
  4. Dans le php.ini (ex : C:\Program Files (x86)\EasyPHP\binaries\php\php_runningversion\php.ini), ajouter :
extension=json.so

json_encode()

modifier

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"}

 

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 JsonSerializable en qui impose une méthode jsonSerialize()[2]. Ex :

    public function jsonSerialize() {
        return $this->array;
    }

Options

modifier

 

Par défaut json_encode() échappe les caractères spéciaux non ASCII (ex : "é" devient "\u00e9"). Pour éviter cela on utilise l'option suivante :

$a = json_encode($monTableau, JSON_UNESCAPED_UNICODE);

Par ailleurs, les erreurs de json_encode() sont accessibles 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);
}

Pour afficher dans un format plus lisible par un humain (indenté), utiliser JSON_PRETTY_PRINT.

json_decode()

modifier

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 semblable à celle de json_encode().

PEAR Services_JSON

modifier

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.

 

Il requiert PHPUnit.phpTélécharger.


La classe Services_JSON de JSON.php peut s'utiliser comme décrit dans Test-JSON.php.

Références

modifier