Bonjour !
Je vous propose d'apprendre à interroger un web service JSON et à analyser les données reçues.
Le web service que j'ai choisi pour cet exemple fournit des informations sur le calendrier liturgique catholique. La documentation de l'API se trouve à l'adresse suivante :
http://calapi.inadiutorium.cz/api-doc
Je souhaite consulter la date du jour dans le calendrier. Voici comment interroger le web service :
1 2 3 4 5 6 7 8 9 10 11
| uses
fphttpclient;
const
URL = 'http://calapi.inadiutorium.cz/api/v0/fr/calendars/general-fr/today';
var
vJSONText: string;
begin
vJSONText := TFPCustomHTTPClient.SimpleGet(URL); |
Afin de bien comprendre ce qui se passe (et afin de pouvoir éventuellement travailler sans connexion), je colle directement dans mon code la chaîne de caractères renvoyée précédemment par la méthode SimpleGet :
vJSONText := '{"date":"2018-04-01","season":"easter","season_week":1,"celebrations":[{"title":"Dimanche de Pâques de la Résurrection du Seigneur","colour":"white","rank":"Triduum Pascal","rank_num":1.1}],"weekday":"sunday"}';
Voici comment convertir cette chaîne de caractères en données JSON sous la forme du type TJSONData :
1 2 3 4 5 6 7 8 9 10 11 12 13
| uses
fpjson, jsonparser;
{ ... }
var
{ ... }
vJSONData: TJSONData;
begin
{ ... }
vJSONData := GetJSON(vJSONText); |
Le premier avantage de cette conversion est de pouvoir reformater la chaîne de caractères :
WriteLn(vJSONData.FormatJSON());
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| {
"date" : "2018-04-01",
"season" : "easter",
"season_week" : 1,
"celebrations" : [
{
"title" : "Dimanche de Pâques de la Résurrection du Seigneur",
"colour" : "white",
"rank" : "Triduum Pascal",
"rank_num" : 1.1000000000000001E+000
}
],
"weekday" : "sunday"
} |
Le principal avantage est de pouvoir accéder à la donnée de son choix :
WriteLn(vJSONData.FindPath('celebrations').Items[0].FindPath('title').AsString);
Non seulement ça fonctionne, mais à présent les accents s'affichent correctement (dans la console de Notepad++).
Dimanche de Pâques de la Résurrection du Seigneur
Comme vous le voyez, on accède à une table associative ({}) par la méthode FindPath, et on accède à un tableau ([]) par la variable Items.
Vous trouverez ci-joint le code source complet de l'exemple.
Joyeuses Pâques !
Partager