[RESOLU] Débutant API remonter info JSON

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Débutant API remonter info JSON

Re: Débutant API remonter info JSON

par pleiode » 22 juil. 2022, 10:55

$temperature = $json->metcheckData->forecastLocation->forecast[0]->temperature;
Ah mais oui je n'avais pas remonté toute la chaine, merci !

Re: Débutant API remonter info JSON

par or 1 » 21 juil. 2022, 22:41

$temperature = $json->metcheckData->forecastLocation->forecast[0]->temperature;

Re: Débutant API remonter info JSON

par pleiode » 21 juil. 2022, 22:32

Super merci pour votre aide !
Du coup j'ai fait un decode mais rien ne s'affiche :/

Code : Tout sélectionner

<body> <?php $url = 'http://ws1.metcheck.com/ENGINE/v9_0/json.asp?lat=47.2&lon=-1.6&lid=13308&Fc=As'; $raw = file_get_contents($url); $json = json_decode($raw); var_dump($json); $temperature = $json->forecast[0]->temperature; echo $temperature; ?> <h1> <?=$temperature ?> </h1> </body>
Voici le le lien de l'API si vous voulez voir son contenu : http://ws1.metcheck.com/ENGINE/v9_0/jso ... 3308&Fc=As

Re: Débutant API remonter info JSON

par @rthur » 21 juil. 2022, 12:00

Voici 2 possibilités pour faire ce que tu veux :

A) Soit tu fais une boucle pour parcourir chaque objet de ton JSON à la recherche de la date voulue.
Un JSONdecode et un foreach feront l'affaire : https://www.php.net/json_decode https://www.php.net/foreach

B) Sinon tu peux aussi utiliser l'équivalent d'une recherche XPATH habituellement sur du XML mais que tu peux aussi utiliser sur du JSON avec cette lib : https://github.com/Galbar/JsonPath-PHP

Code : Tout sélectionner

// Pour récupérer toutes les données de cette date/heure $..forecast[?(@.utcTime== '2022-07-18T09:00:00.00')] // Pour récupérer uniquement la température $..forecast[?(@.utcTime== '2022-07-18T09:00:00.00')]['temperature']
Tu peux tester ici : https://jsonpath.com/


A titre personnel, je recommande la 1ère solution qui est + simple, même si la 2ème est assez élégante :-)

Re: Débutant API remonter info JSON

par ynx » 21 juil. 2022, 11:57

Bonjour,

Le retour de l'API étant au format JSON, tu peux utiliser la fonction PHP json_decode pour convertir ce retour en objet/tableau PHP afin de pouvoir l'exploiter.
https://www.php.net/manual/fr/function.json-decode.php

Débutant API remonter info JSON

par pleiode » 20 juil. 2022, 20:54

Hello !
Je débute avec les APIs et j'aurais besoin d'un peu d'aide :) !

Voilà j'ai l'API Metcheck,

Code : Tout sélectionner

{ "metcheckData": { "forecastLocation": { "forecast": [ { "temperature": "28", "dewpoint": "3", "rain": "0.000", "freezinglevel": "4500", "uvIndex": "2", "totalcloud": "0", "lowcloud": "0", "medcloud": "0", "highcloud": "0", "humidity": "38", "windspeed": "13", "meansealevelpressure": "1017", "windgustspeed": "22", "winddirection": "105", "windletter": "ESE", "icon": "SU", "iconName": "Sunny", "chanceofrain": "2", "chanceofsnow": "0", "dayOfWeek": "2", "weekday": "Monday", "sunrise": "5:27", "sunset": "20:56", "seeingIndex": "7", "pickeringIndex": "9", "transIndex": "8", "dayOrNight": "D", "utcTime": "2022-07-18T08:00:00.00" }, { "temperature": "31", "dewpoint": "2", "rain": "0.000", "freezinglevel": "4509", "uvIndex": "4", "totalcloud": "0", "lowcloud": "0", "medcloud": "0", "highcloud": "0", "humidity": "32", "windspeed": "13", "meansealevelpressure": "1017", "windgustspeed": "20", "winddirection": "109", "windletter": "ESE", "icon": "SU", "iconName": "Sunny", "chanceofrain": "7", "chanceofsnow": "0", "dayOfWeek": "2", "weekday": "Monday", "sunrise": "5:27", "sunset": "20:56", "seeingIndex": "7", "pickeringIndex": "9", "transIndex": "8", "dayOrNight": "D", "utcTime": "2022-07-18T09:00:00.00" },
Et j'aimerais comprendre comment chercher une information en remontant dans la hiérarchie !
Par exemple récupérer la température de 9h le 18/07/2022

Merci d'avance pour votre aide :D