Beginner problemen met API
Ik ben een beginner op het vlak van PHP en het gebruik van API's en daarom wilde ik het toch wel eens leren. Ik ben begonnen met het leren van de werking van de Strava API, maar heb enkele problemen.
Onderstaande code werkt. Ik gebruik het echo statement om de link te testen, en ik krijg als antwoord 'Array' dus dat klopt. Ik kan ook values uit deze JSON halen.
$membersFile = file_get_contents('https://www.strava.com/api/v3/clubs/beearunner/members?access_token=XXXXXX&per_page=200');
$JSONObj = json_decode($membersFile);
echo $JSONObj;
Echter, onderstaande code werkt niet. De echo geeft niets als return. Er is nochtans niets veranderd, behalve de link. Maar die werkt wel als ik 'm gewoon in chrome open. Daarom denk ik dat het probleem is, de manier waarop de JSON is opgebouwd? Ik kan er niet goed aan uit.
$membersFileTwo = file_get_contents('https://www.strava.com/api/v3/athletes/3805089/stats?access_token=XXXXXX&per_page=200');
$JSONObjTwo = json_decode($membersFileTwo);
echo $JSONObjTwo;
De eerste link geeft een JSON-structuur weer met haakjes:
[{...}]
De tweede link gebruikt echter de vierkante haakjes niet;
{...}
Zou dat misschien het probleem kunnen zijn?
Als iemand mij zou kunnen helpen zou dat geweldig zijn.
Met vriendelijke groeten,
Nick Suy
Gewijzigd op 19/03/2018 16:09:51 door - Ariën -
Alvast bedankt voor de snelle reactie.
Als ik beide links uitlees met print_r() krijg ik telkens inderdaad de volledige JSON gegevens te zien.
documentatie.
In een van de gevallen wordt een mengvorm van objecten en arrays geretourneerd, in het andere een object. Om ervoor te zorgen dat er altijd een (genest) array wordt teruggegeven dien je de tweede parameter van json_decode() op true te zetten (default false). Dit zorgt ervoor dat een (potentieel) (genest) object altijd wordt omgezet naar een (genest) associatief array. Zie ook de Gewijzigd op 19/03/2018 16:26:34 door Thomas van den Heuvel
Je hebt helemaal gelijk en ik had geen idee dat het zo moest. Bedankt! Ik heb twee keer de parameter 'true' toegevoegd en nu krijg ik telkens een Array.
Ik veronderstel dat de gegevens nu wel wat anders genest worden, aangezien mijn originele code niet meer werkt? Dit zoek ik dan wel uit.
Bedankt voor de hulp!