Article mis à jour le : 05-05-2022
Encoder et récuperer des données au format jSON avec PHPVoici un petit rappel sur comment encoder des données au format jSON avec PHP.
On peut se contenter d'afficher la chaine construite manuellement au format jSON, par exemple :
$maVar = '[{"titre":"1"},{"titre":"2"}]';
//Deux objetsLà pas besoin d'encodage...
Mais dans le cas où l'on veut manipuler beaucoup de données, sachez qu'un objet jSON est au départ un tableau, dans le cas de PHP. Il faudra donc le convertir en chaine jSON. Il en est de même si vous retournez un tableau d'objets.
Exemple ici, avec un tableau contenant trois objets:
$maVar = array(
array(
"titre" => "valeurA"
),
array(
"titre" => "valeurB"
),
array(
"titre" => "valeurC"
)
);
echo json_encode($maVar);
$result =Array
(
'Id' => '99',
'Message' => 'blabla'
);
//header('Content-Type: application/json');
header('Content-type:application/json;charset=utf-8'); // Précise le type de données + l'encodage
echo json_encode($result);
$url = 'http://test.dev/toto.php';
La récupération des données peut se faire de 2 manières, tout dépend des paramétrages de votre serveur
Soit :
$result = file_get_contents($url);
Soit:
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Accept: application/json'
));
$result = curl_exec($ch);
curl_close($ch);
Dans les deux cas, il suffit ensuite de décoder et manipuler les données:
$json = json_decode($result, true);
echo $json['Message'];