• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

JSON API auslesen

jakestyler

Mitglied
Hallo,
ich muss mal wieder eine JSON-Public-API auslesen. Diesen Code benutze ich normalerweise:

PHP:
$API = @file_get_contents("jsonapi.json");
$array = json_decode($API, true);
if(!$array)
echo "Nope.";
if(!isset($array['uptimePercent4']))
$Uptime = $array['stats']['uptimePercentIPv4'];

Nun habe ich aber eine API die so aussieht:
Code:
{
  "info": {
    "num_results": 31,
    "limit": 100,
    "offset": 0,
    "query": "Kraftklub",
    "type": "track",
    "page": 1
  },
  "tracks": [
    {
      "album": {
        "released": "2013",
        "href": "spotify:album:6tAlnBBhfQ2JKgccEXox4p",
        "name": "Hinterland",
        "availability": {"territories": "AD AR AT AU BE BG BO CA CH CL CO CR CY CZ DE DK DO EC EE ES FI FR GB GR GT HK HN HU IE IS IT LI LT LU LV MC MT MX MY NI NL NO NZ PA PE PH PL PT PY RO SE SG SI SK SV TR TW US UY"}
      },
      "name": "Ganz schön okay",
      "popularity": "0.66",
      "external-ids": [{
          "type": "isrc",
          "id": "DEQ321300247"
        }],
      "length": 250.049,
      "href": "spotify:track:5aOAuKoVtxk5qj0rSD75Gu",
      "artists": [
        {
          "href": "spotify:artist:6UDhlW8uEVBBrqHS3RrKuv",
          "name": "Casper"
        },
        {
          "href": "spotify:artist:0MZ55DwuMQ1B2TXq9lcrE4",
          "name": "Kraftklub"
        }
      ],
      "track-number": "8"
    },...

Wie kann ich hier jetzt verschiedene Infos ausgeben? Zum Beispiel möchte ich die gefundenen Ergebnisse ausgeben (Hier 31), dass habe ich auch bereits geschafft: $array['info']['num_results'].

Allerdings schaffe ich es nicht, beim ersten Album unter Tracks (tracks => album => released ) z.B. "released" auszugeben...

Danke für eure Hilfe!
 
Werbung:
PHP:
echo $array['tracks'][0]['album']['released'];

Erklärung

  1. { <--- 1.
  2. "info": {
  3. "num_results": 31,
  4. "limit": 100,
  5. "offset": 0,
  6. "query": "Kraftklub",
  7. "type": "track",
  8. "page": 1
  9. },
  10. "tracks": [ <--- 2.
  11. { <--- 3.
  12. "album": { <--- 4.
  13. "released": "2013".
Du willst als erstes (1.) einen eintrag aus einem Objekt auslesen dessen Anfang durch eine solche offenne Klammer { definiert wird.
Objekt Keys Werden in JSON immer als Strings angegeben also kannst du dir bei einem { sichersein, dass du wenn du den Key tracks z.b. haben willst ['tracks'] schreiben musst.
In 2. siehst du diese klammer [, Sie markiert den anfang eines Arrays und in JSON fangen alle Arrays bei 0 an und zählen dann hoch. Du willst [0] haben.
Da man Arrays üblicherweise benutzt um mehrere gleiche Ellemente zu speichern kannst du an dieser Stelle auch einfach z.b. eine for schleife einbauen um alle einträge auszulesen.
3. ist wirder ein Object und du willst den Key "album" haben also ['album'] und 4. genau so also ['released'].

Hier sind sehr einfache Diagramme die den Aufbau von JSON dateien erklären.

http://json.org/

Die Diagramme unter String und unter Number werden dich schätzungsweise erst einmal nicht interessieren. Aber die ersten drei beschreiben wesentlich einfacher, was ich dir eben beschrieben habe.

lg
 
Werbung:
PHP:
echo $array['tracks'][0]['album']['released'];

Erklärung

  1. { <--- 1.
  2. "info": {
  3. "num_results": 31,
  4. "limit": 100,
  5. "offset": 0,
  6. "query": "Kraftklub",
  7. "type": "track",
  8. "page": 1
  9. },
  10. "tracks": [ <--- 2.
  11. { <--- 3.
  12. "album": { <--- 4.
  13. "released": "2013".
Du willst als erstes (1.) einen eintrag aus einem Objekt auslesen dessen Anfang durch eine solche offenne Klammer { definiert wird.
Objekt Keys Werden in JSON immer als Strings angegeben also kannst du dir bei einem { sichersein, dass du wenn du den Key tracks z.b. haben willst ['tracks'] schreiben musst.
In 2. siehst du diese klammer [, Sie markiert den anfang eines Arrays und in JSON fangen alle Arrays bei 0 an und zählen dann hoch. Du willst [0] haben.
Da man Arrays üblicherweise benutzt um mehrere gleiche Ellemente zu speichern kannst du an dieser Stelle auch einfach z.b. eine for schleife einbauen um alle einträge auszulesen.
3. ist wirder ein Object und du willst den Key "album" haben also ['album'] und 4. genau so also ['released'].

Hier sind sehr einfache Diagramme die den Aufbau von JSON dateien erklären.

http://json.org/

Die Diagramme unter String und unter Number werden dich schätzungsweise erst einmal nicht interessieren. Aber die ersten drei beschreiben wesentlich einfacher, was ich dir eben beschrieben habe.

lg

Hallo Slibbo,

das ist sehr schön und vor allem für Laien erklärt. Kannst du eventuell noch sagen wie ich anhand dieses datenbeispiels die Daten in einer tabelle ausgeben kann mittels php?

Ich wüsste jetzt nicht genau wie ich den Wert anzeigen lassen kann da wo ich ihn bräuchte. Wäre es dir möglich den code mal komplett zu gestalten (je nach Anforderung in php / Java etc.) so als müsste der abgefragte satz "release" in einer Tabelle ausgegeben werden. das würde mir bei meinem Problem helfen.

Ich werde als laie nicht mehr viel lernen, aber so wüsste ich zumindest wie ich daten anzeigen lassen kann aus API´s die per URL aufgerufen werden.

Vorab schon einmal ein großes Dankeschön an dich.

Liebe Grüße
rené
 
das ist sehr schön und vor allem für Laien erklärt. Kannst du eventuell noch sagen wie ich anhand dieses datenbeispiels die Daten in einer tabelle ausgeben kann mittels php?
Aufgrund des Alters des Threads wirst du wohl kaum Antworten bekommen. Ich empfehle dir, einen neuen Thread zu eröffnen.
 
Zurück
Oben