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

[ERLEDIGT] JSON API auslesen

jakestyler

Mitglied
Hallo liebes Forum! :)

Ich habe eine JSON-API die wie folgt aussieht:
Code:
[COLOR=#000000][FONT=Times][{"service_id":"4252","active":"1","service_type_id":"1","service_type_name":"Webseite \/ HTTP","service_interval_id":"2","service_interval_interval":"300","target":"website.de","ip_version":"4","name":"Website","error":"0","last_error":"1371810002","error6":"0","last_error6":"0","current":226.71,"current6":0,"stats":{"age":17036167,"downtime4":48070,"downtime6":0,"downtimePercent4":0.28216440940031,"downtimePercent6":0,[/FONT][/COLOR][COLOR=#ff0000][FONT=Times]"uptimePercent4":99.7178355906[/FONT][/COLOR][COLOR=#000000][FONT=Times],"uptimePercent6":100}}][/FONT][/COLOR]

Jetzt würde ich gerne das rot markierte auslesen:
PHP:
$API = file_get_contents("https://wemonit.de/api/service/list/?apikey=censored");
$array = json_decode($API);
$Uptime = $array['uptimePercent4'];

Leider funktioniert das nicht.

Der dazu ausgegebene Fehler heisst:
Notice: Undefined index: uptimePercent4 in /var/www/usernamecensored/html/status/index.php on line 37

Line 37:
PHP:
$array['uptimePercent4'];

Es geht übrigens um die Wemonit API, falls das wichtig ist.

Danke schonmal! :)
 
Werbung:
Dein JSON-Code ist erstmal nicht vollständig. Ist das der wirkliche Code deiner JSON-API, wird json_decode wohl nur sowas wie false ausgeben.
Ist der Code nicht vollständig, kann im vollständigen Code auch nicht die Variable "uptimePercent4" direkt vorkomment, denn dein JSON-Objekt wird von einem Array umgeben.
Bei json_decode würde ich noch ein "true" übergeben, damit der Code auch als Array geparst wird.
Probier also mal das:

$API = file_get_contents("https://wemonit.de/api/service/list/?apikey=censored");
$array = json_decode($API, true);
if(!$array)
print "JSON-API ist fehlerhaft: " + $API;
if(!isset($array[0]['uptimePercent4']))
print "uptimePercent4 existiert nicht";
$Uptime = $array[0]['uptimePercent4'];
 
Werbung:
Lass dir doch einfach $array ausgeben und schau was da drin ist.

PHP:
echo '<pre>';
print_r($array);
echo '</pre>';

Und ich bin nun auch nicht ganz so mit json vertraut, aber das uptimePercent4, welches du haben willst ist ein Element von stats. Also gibt es bei stats noch eine Ebene. Das sieht man sehr gut wenn man sich das mal formatiert anzeigen lässt

[ {
"service_id":"4252",
"active":"1",
"service_type_id":"1",
"service_type_name":"Webseite \/ HTTP",
"service_interval_id":"2",
"service_interval_interval":"300",
"target":"website.de",
"ip_version":"4",
"name":"Website",
"error":"0",
"last_error":"1371810002",
"error6":"0",
"last_error6":"0",
"current":226.71,
"current6":0,
"stats":
{
"age":17036167,
"downtime4":48070,
"downtime6":0,
"downtimePercent4":0.28216440940031,
"downtimePercent6":0,
"uptimePercent4":99.7178355906,
"uptimePercent6":100
}
}
]

Kann das denn sein, dass du mit $array['stats']['uptimePercent4']
drauf zugreifen musst?
 
Zuletzt bearbeitet:
Zurück
Oben