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

Probleme mit JSON API

jakestyler

Mitglied
Hallo,
für eine Status-Seite lese ich aus der API von WeMonit aus, doch seit kurzem geht gar nichtsmehr.

I. So sieht die API aus:
Code:
{"service_id":12345,"active":1,"service_type_id":1,"service_type_name":"Webseite / HTTP","service_interval_id":2,"service_interval_interval":300,"target":"domain.de","ip_version":4,"name":"Domain-Name","error":0,"last_error":zahl1234,"error6":0,"last_error6":zahl000,"stats":{"age":23608838,"downtime4":1227064.0,"downtimePercent4":5.2,"uptimePercent4":94.8},"current":2082.88,"current6":0.0,"average":210.85,"average6":0.0,"images":
Geht noch ein bisschen weiter, aber darum geht's.

II. Das ist mein Code:
PHP:
// Call WeMonit API & Get Response
$API = @file_get_contents("https://wemonit.de/api/service/view/?apikey=blablablup&id=blubb");
$array = json_decode($API, true);
if(!$array)
print "Huston! We have a problem over here: " + $API;
if(!isset($array[0]['uptimePercent4']))
$Result = $array[0]['stats']['uptimePercent4'];

III. Fehlermeldung:
Notice: Undefined offset: 0 in /pfad/index.php on line 50
Line 50 ist in diesem Fall $Result = $array[0]['stats']['uptimePercent4'];

Leider kann ich mit der Fehlermeldung nichts anfangen und vorher hat ja auch alles geklappt.
Ich hoffe auf eine Antwort,
Danke schonmal,
jakestyler
 
Hey,

kleiner Tipp lass dir dein Array mal ausgeben. Die Fehlermeldung besagt, dass der Index 0 im Array nicht existiert.
Ich hab mir diesen JSON Schnipsel mal angeschaut und da sind zwei Fehler drin.

Und zwar die Werte bei "last_error" und bei "last_error6" müssen entweder zahlen sein oder ein String. Aber der String ist nicht im Anführungszeichen.
 
Arrays kannst du am besten mit "print_r($array);" ausgeben. Wenn du versucht ein Array mit echo auszugeben, steht immer "Array" da.
Also wenn das Array befüllt ist müsstest du den Wert glaub ich so abfragen:
$array['stats']['uptimePercent4'];

Also das geht nun vom dem JSON teil hervor welches du oben gepostet hast.

Ansonsten wie gesagt die beiden Felder im JSON, ich weiß nicht ob du die beeinflussen kannst. Denn dort kommen entweder Zahlen rein oder Strings. Und Strings müssen in Anführungszeichen stehen.

Könnte nun auch ein Fehler in der Schnittstelle sein, sowas kann man nie ausschließen
 
Ok, danke, kenne micht mit sowas eher nicht aus... :)

Ausgabe durch print_r($array);:
Array ( [service_id] => 12345 [active] => 1 [service_type_id] => 1 [service_type_name] => Webseite / HTTP [service_interval_id] => 2 [service_interval_interval] => 300 [target] => domain.de [ip_version] => 4 [name] => Domain-Name [error] => 0 [last_error] => 1378624892 [error6] => 0 [last_error6] => 1373396230 [stats] => Array ( [age] => 23643320 [downtime4] => 1227064 [downtimePercent4] => 5.19 [uptimePercent4] => 94.81 ) [current] => 236.47 [current6] => 0 [average] => 512.02 [average6] => 0 [images] => Array ( [latency4] => /share/report/getimage/s/4252/t/fd51782c991c2cd2774f2ca2535d827877501f93/graphType/0/ipType/4/4252.png [latency6] => /share/report/getimage/s/4252/t/fd51782c991c2cd2774f2ca2535d827877501f93/graphType/0/ipType/6/4252.png [uptime4] => /share/report/getimage/s/4252/t/fd51782c991c2cd2774f2ca2535d827877501f93/graphType/1/ipType/4/4252.png [uptime6] => /share/report/getimage/s/4252/t/fd51782c991c2cd2774f2ca2535d827877501f93/graphType/1/ipType/6/4252.png ) )

Und bei print_r($array[0]['stats']['uptimePercent4']); kommt, wie schon zuvor:
Notice: Undefined offset: 0 in /pfad/index.php on line 47
herraus.
 
Zurück
Oben