Dans ce tutoriel nous allons voir comment manipuler un fichier de données JSON avec un script en PHP. Pour utiliser ou manipuler notre fichier JSON le pré requis sera d’avoir installé un serveur web et PHP.

Si vous ne savez pas comment faire, vous pouvez consulter ce tutoriel sur l’installation de WAMP.

Je m’abonne à la chaîne NumelionWeb

Pour ceux qui ne savent pas à quoi correspond exactement un fichier JSON (définition Wikipédia) :

JSON (JavaScript Object Notation) est un format de données textuelles, générique, dérivé de la notation des objets du langage ECMAScript. Il permet de représenter de l’information structurée.

Maintenant, passons aux choses sérieuses, nous allons utiliser le fichier JSON suivant :

{
    "response": {
        "version": "0.9"
        ,"termsofService": "https://www.numelion.com"
        ,"features": {
        "date": "24/09/2013"
        }
    },
    "cotation_bourse": [
        {
        "bourse": {
        "heure": "15",
        "minute": "04"
        },
        "total": {
        "compagnie": "Total", 
        "cotation": "43,15", 
        "tendance": "+ 1,04"},    
        "michelin": {
        "compagnie": "Michelin", 
        "cotation": "82,42", 
        "tendance": "+ 1,20"}
        },
        {
        "bourse": {
        "heure": "09",
        "minute": "04"
        },
        "yahoo": {
        "compagnie": "Yahoo",
        "cotation": "30,26", 
        "tendance": "- 1,06"},
        "google": {
        "compagnie": "Google",
        "cotation": "886,50", 
        "tendance": "- 3,89"}
        }
        ]
}
Utiliser et manipuler du JSON avec PHP
Utiliser et manipuler du JSON avec PHP

Je nomme ce fichier cotation_bourse.json. Ce fichier contient les cotations boursières de plusieurs compagnies. Vu comme cela un fichier de données JSON semble plutôt complexe à décortiquer alors qu’en réalité c’est très simple. Pour cela nous allons utiliser deux fonctions de PHP, var_dump et json_decode, cela va nous permettre de connaître la structure de notre fichier JSON puis de faire le script PHP adapté à celui-ci .

Créons un premier script PHP dans un fichier pour découvrir la structure de notre document JSON et lançons le :

<?php
// indiqué le chemin de votre fichier JSON, il peut s'agir d'une URL
$json = file_get_contents("cotation_bourse.json");

var_dump(json_decode($json));
?>

Le résultat qui s’affiche et qui nous présente la structure de notre fichier JSON est le suivant :

Manipuler un fichier JSON
Manipuler un fichier JSON

Maintenant, il devient très simple de le comprendre, la fonction var_dump présente notre fichier sous la forme d’objets, chaque objet peut lui même contenir un objet ou un tableau par exemple. La capture ci-dessous vous présente la composition de notre fichier. Dans notre exemple ci-dessous, si on souhaite accéder à l’objet 3 dans le rectangle vert il faut passer par l’objet 2 lui-même contenu dans l’objet 1.

Utiliser un fichier JSON
Utiliser un fichier JSON

L’objet 3 contient la date du jour, pour la récupérer nous allons utiliser le code adéquat maintenant que nous savons qu’elle est contenue dans la variable date de l’objet 3, cette variable est elle-même contenue dans la variable features de l’objet 2 qui est contenu dans la variable response de l’objet 1. On sait quelle variable contient la donnée grâce au petit décalage en dessous. On peut donc utiliser le code suivant pour récupérer la valeur contenue dans la variable date :

<?php
$json = file_get_contents("cotation_bourse.json");

$parsed_json = json_decode($json);
$date_jour = $parsed_json->{'response'}->{'features'}->{'date'};
?>

J’ai donc utilisé la fonction json_decode qui permet de récupérer une chaîne encodée en JSON et de la convertir en une variable PHP nommé ici parsed_json, cette variable contient notre fichier JSON d’une manière exploitable, ensuite je créer une seconde variable date_jour avec le chemin d’accès à la variable date dans le fichier JSON, celui-ci étant contenu dans la variable $parsed_json.

Nous avions vu que pour accéder à date dans l’objet 3, il fallait passer par response dans l’objet 1 et features dans l’objet 2. La date du jour est maintenant contenue dans la variable $date_jour. Pour naviguer dans un fichier JSON il s’agit simplement d’indiquer le bon chemin après avoir analysé la structure.

Voyons maintenant les tableaux dans les objets, sur la capture présentant le résultat de var_dump vous pouvez constater qu’un tableau (array) est présent dans l’objet « cotation_bourse ». En réalité, ils sont deux tableaux, représenté par 0 => et 1=>, 0 est égal au tableau n°1 et 1 au tableau n°2. Comme vous le voyez, chaque tableau contient lui-même des objets qui eux-mêmes auraient pu contenir d’autres objets, ce n’est pas le cas ici par souci de simplicité. L’image ci-dessous vous présente la structure

Comment utiliser JSON dans PHP
Comment utiliser JSON dans PHP

Pour la petite explication, les objets « response » et « cotation_bourse » sont des objets de bases tous les deux, autrement dit les deux sont les premiers objets en contenant d’autres. On le remarque, car ils sont sur la même ligne verticale. Pour accéder à nos tableaux, nous allons reprendre notre code précédent et lui apporter de légères modifications.

<?php
$json = file_get_contents(« cotation_bourse.json »);
$parsed_json = json_decode($json);
$date_jour = $parsed_json->{‘response’}->{‘features’}->{‘date’};
$heure_cac40 = $parsed_json->{‘cotation_bourse’}[0]->{‘bourse’}->{‘heure’};
$minute_cac40 = $parsed_json->{‘cotation_bourse’}[0]->{‘bourse’}->{‘minute’};
$nom_compagnie = $parsed_json->{‘cotation_bourse’}[0]->{‘total’}->{‘compagnie’};
$cotation_total = $parsed_json->{‘cotation_bourse’}[0]->{‘total’}->{‘cotation’};
$tendance_total = $parsed_json->{‘cotation_bourse’}[0]->{‘total’}->{‘tendance’};
?>

Comme vous le constatez le il suffit d’indiquer le numéro du tableau entre crochet derrière l’objet qui contient le tableau, donc cotation_bourse, pour pouvoir y accéder, ici le tableau [0] correspond au premier tableau, je récupère ainsi les informations contenues dans celui-ci de la même manière que pour le premier exemple, en passant d’objets en objet.

Nous pouvons ainsi récupérer les variables et afficher une phrase qui apparaîtra dans le navigateur par exemple avec le code complet :

<?php
$json = file_get_contents("cotation_bourse.json");

var_dump(json_decode($json));

$parsed_json = json_decode($json);
$date_jour = $parsed_json->{'response'}->{'features'}->{'date'};
$heure_cac40 = $parsed_json->{'cotation_bourse'}[0]->{'bourse'}->{'heure'};
$minute_cac40 = $parsed_json->{'cotation_bourse'}[0]->{'bourse'}->{'minute'};
$nom_compagnie = $parsed_json->{'cotation_bourse'}[0]->{'total'}->{'compagnie'};
$cotation_total = $parsed_json->{'cotation_bourse'}[0]->{'total'}->{'cotation'};
$tendance_total = $parsed_json->{'cotation_bourse'}[0]->{'total'}->{'tendance'};

 echo "Le ${date_jour} à ${heure_cac40} h ${minute_cac40}, la cotation de ${nom_compagnie} 
 est de ${cotation_total} et sa tendance de ${tendance_total} %n";
?>

Le résultat sera le suivant :

Traiter fichier JSON
Traiter un fichier JSON