Introduktion
I tidigare lektioner i denna serie så har vi lärt oss om vad ett API är och hur man kan göra förfrågningar till det via Python. Som exempel har vi använt oss av Edamam´s recept-API.
Jobba vidare med svaret
När du skickat en förfrågan som gått igenom enligt vår förra lektion så är det dags att börja jobba vidare med datan vi har fått från Edamam. Du borde ha fått ett svar från deras API som liknar detta:
Exempelsvar från Edamam´s recept-API:
Vänligen notera: "..." representerar plats där annan data finns men som inte har tagits med p.g.a. utrymmesskäl.
JSON - En introduktion
Svaret vi får från Edamam är skrivet i ett annat programmeringsspråk skulle man kunna säga, JSON. JSON är ett väldigt populärt format att använda för att lagra och presentera data. Det är väldigt lätt att förstå och bygger på ett slags system med nycklar och värden, skulle man kunna säga. En JSON-sträng börjar med { och slutar med }. All data innanför strängen betecknas med nycklar som kommer först, och sedan dess värden som kommer efterråt, med ett kolon emellan. Mellan en datapunkt och en annan används kommatecken, förutom på den alla sista datapunken. Med datapunkt menar vi en nyckel och ett värde. Det är faktiskt otroligt enkelt att förstå, vi kan ta ett illustrerat exempel:
JSON kan även lagra listor och lite annat. Här är ett exempel på det:
Svaret från Edamam´s recept-API har en lite mer komplicerad datastruktur. Därför kan man med fördel använda sig av ett verktyg som exempelvis det som jsonviewer.stack.hu erbjuder:
Om du vill få värdet nyckeln "q" visar (som i exemplet ovan), så kan du skriva så här i Python:
Klicka här när du vill redigera.
Du kan alltså ta ut värden från JSON-objekt ungefär som du tar ut värden ur listor.
Om du kikar vidare på datastrukturen med hjälp av verktyget JSONViewer länkat här ovanför så kan du se att alla recept finns under en lista som heter "hits". Den listan innehåller i sin tur ännu fler JSON-objekt. Men om vi analyserar listan bit för bit så kanske du märker att det inte är så krångligt egentligen:
Om du kikar vidare på datastrukturen med hjälp av verktyget JSONViewer länkat här ovanför så kan du se att alla recept finns under en lista som heter "hits". Den listan innehåller i sin tur ännu fler JSON-objekt. Men om vi analyserar listan bit för bit så kanske du märker att det inte är så krångligt egentligen:
Vad vi vill ha åt är alla recept. Därför kan vi loopa igenom listan "hits" på detta sätt:
Klicka här när du vill redigera.
Koden ovan kommer loopa igenom listan "hits" och skriva ut alla JSON-objekt som finns i den. Det kanske inte är det mest användbara, men vi kan till exempel utveckla detta till att skriva ut länkar till alla recept:
Klicka här när du vill redigera.
Om du tittar under varje objekt i listan "hits" med hjälp av JSONViewer-verktyget så kan säkert hitta nyckeln "url" om du inte redan förstår vad den kommer ifrån. Eftersom att recipe-variabeln kommer ge det som står i listan "hits" så behöver vi inte skriva mer än bara ["url"] efter recipe-variabeln när vi printar ut data.
Notera: I Python finns en JSON-liknande typ av variabler som kallas för dictionaries, eller dicts. Det är stor chans att om du någon gång tror att du jobbar med JSON i ett projekt så kommer du i själva verket att jobba med dictionaries. Dictionaries är väldigt lika JSON-variabler.
Din uppgift:
Nu kanske du förstår JSON... eller så snurrar det bara i huvudet.
Du kan antingen försöka att bygga en enkel sökmotor (sökfunktion) med hjälp av Edamam´s recept-API som tar in en sökterm, skickar en förfrågning till Edamam och sedan printar ut alla recept den får som resultat. Om detta är för svårt kan du först öva genom att ladda in koden nedan i en ny Pythonfil och försöka skriva ut värdena name, age och country för båda JSON-variablerna.
Du kan antingen försöka att bygga en enkel sökmotor (sökfunktion) med hjälp av Edamam´s recept-API som tar in en sökterm, skickar en förfrågning till Edamam och sedan printar ut alla recept den får som resultat. Om detta är för svårt kan du först öva genom att ladda in koden nedan i en ny Pythonfil och försöka skriva ut värdena name, age och country för båda JSON-variablerna.
Klicka här när du vill redigera.