kostenloser Webspace werbefrei: lima-city


Problem bei auslesen einer API

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    ultimate-bravery

    ultimate-bravery hat kostenlosen Webspace.

    Hallo zusammen.
    Ich schreibe gerade einen Code, der eine API ausliest. Ich bin darin nicht sehr erfahren und ich benutze den alten Code, den ich schonmal hier im Forum bekommen habe. So sieht es aus:

    $url = 'http://...';
    $out = get_headers($url);
    if($out[0]!== false){
           $json_file = @file_get_contents($url);
           $json_array = json_decode($json_file);
           $array = $json_array->data->name;
    }

    usw...

    So hat das damals auch geklappt und so sollte es auch eigentlich immer noch klappen, aber in der API steht nun nicht "data" sondern eine Variable ID, also eine Zahl. Diese ID habe ich auch in einer Variable stehen. Aber das Abrufen funktioniert irgendwie nicht. Ich habe die ID in der Variable $id. Also sieht die eine Zeile bei mir so aus:

    $array = $json_array->$id->name;


    Das müsste ja eigentlich funktionieren, tut es aber nicht. Es kommt diese Meldung:

    Trying to get property of non-object in ...


    Wenn ich die ID manuell in den Code schreibe, also so:

    $array = $json_array->19380303->name;


    dann kommt folgende Meldung:

    Parse error: syntax error, unexpected '19380303' (T_LNUMBER), expecting identifier (T_STRING) or variable (T_VARIABLE) or '{' or '$' in ...


    Die API ist so aufgebaut:


    {
    "19380303" : {
    "name" : "Irgendeinname",
    .
    .
    .
    }
    }

    Ich würde mich freuen, wenn mir jemand beim Lösen des Problems helfen könnte.
    Viele Grüße


    Beitrag zuletzt geändert: 12.1.2014 22:32:13 von ultimate-bravery
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Versuch's mal mit:
    $array = $json_array->{$id}->name;


    Das sollte funktionieren.

    LG cookies

    Edit: Funktioniert übrigens auch mit festen Zeichenketten, die nicht direkt als Name für eine Objekteigenschaft angegeben werden können, z.B.
    $array = $json_array->{'12345'}->name;

    oder
    $array = $json_array->{'abc-def'}->name;


    Beitrag zuletzt geändert: 12.1.2014 22:42:01 von cookies
  4. Autor dieses Themas

    ultimate-bravery

    ultimate-bravery hat kostenlosen Webspace.

    Mhh danke für die Antwort aber es kommt leider immer noch die gleiche Fehlermeldung -.-
  5. Und du bist sicher, dass du das richtige Element auswählst, also dass es dort auch eine "name"-Eigenschaft gibt?
    Bau in deinen Code bitte mal folgende Zeile ein & poste die Ausgabe hier:
    var_dump($json_array->{$id});


    LG cookies
  6. Autor dieses Themas

    ultimate-bravery

    ultimate-bravery hat kostenlosen Webspace.

    Ja die gibt es. Habe ich gemacht. Die Fehlermeldung bleibt gleich und var_dump gibt NULL zurück. Hier die Ausgabe:

    Notice: Trying to get property of non-object in ...
    NULL
  7. Wenn var_dump() NULL ausgibt heißt das allerdings, dass es kein Element mit dieser ID gibt oder dass es den Wert NULL hat. In beiden Fällen ist es nicht möglich, den Wert vom Unterelement "name" auszulesen, deswegen die Fehlermeldung.
    Die einzig sinnvolle Erklärung ist also, dass es kein Element mit dem Namen gibt. Der Fehler muss also im Wert von $json_array oder im Wert von $id liegen.
    Mit folgendem Code kannst du nochmal prüfen, ob die beiden Variablen wirklich die richtigen Werte haben:
    var_dump($json_array);
    echo $id;


    LG cookies

    Beitrag zuletzt geändert: 12.1.2014 22:59:37 von cookies
  8. Autor dieses Themas

    ultimate-bravery

    ultimate-bravery hat kostenlosen Webspace.

    Oh man danke für den Hinweis, da hätte ich auch vorher mal genauer hinschauen müssen. Habe in der URL da wo man die ID einfügen muss ausversehen ein Schrägstrich zu viel weg gemacht.

    Naja dein Tipp mit den geschweiften Klammern war trotzdem hilfreich.

    Danke nochmal :)
  9. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!