PHP AJAX Wert auslesen: Undefined property: stdClass::$diesel

xep22

Banned
Registriert
Apr. 2018
Beiträge
395
hi,

ich will aus einer JSON die Tankstellendaten auslesen. das JSON sieht so aus :

Code:
{
   "ok":true,
   "data":"MTS-K",
   "prices":{
      "XXXXXXX":{
         "status":"open",
         "e5":1.469,
         "e10":1.239,
         "diesel":1.349
      },
      "XXXXXXXXX":{
         "status":"open",
         "e5":1.149,
         "e10":1.129,
         "diesel":1.389
      },
      "XXXXXXXX":{
         "status":"open",
         "e5":1.139,
         "e10":1.189,
         "diesel":1.289
      }
   }
}

Das Auslesen vom Status klappt auch:

PHP:
echo json_decode($json)->prices->ID_HIER->status;

aber bei den Zahlen, also den Preisen, gibt es irgendwie Probleme, im Serverlog steht:

Undefined property: stdClass::$diesel

Ich versuche es wie beim status :

PHP:
echo json_decode($json)->prices->ID_HIER->diesel;

Was mache ich falsch ?
 
Gerade die ID ist das Wichtigste hier, welche du ersetzt. Weiterhin solltest du es als Array deserialisieren und nicht als Objekt. Das macht die Sache immer problematisch.

Und wie immer in deinen Threads: Sieh dir die Werte mit var_dump() an oder nutz nen Debugger.
 
  • Gefällt mir
Reaktionen: abcddcba
var_dump zu

json_decode($json)->prices->ID_HIER->diesel

sagt NULL.

print_r:

{"ok":true,"license":"CC BY 4.0 - https:\/\/creativecommons.tankerkoenig.de","data":"MTS-K","prices":{"XXXXXXX":{"status":"closed"}}}

Aber wieso fehlen da die Preise ?
 
Also die Idee wäre sowas:

PHP:
<?php
$return = json_decode($json);
print_r($return);
/* beziehungsweise */
var_dump($return);
 
Code:
stdClass Object ( [ok] => 1 [license] => CC BY 4.0 - https://creativecommons.tankerkoenig.de [data] => MTS-K [prices] => stdClass Object ( [XXXXXXXX] => stdClass Object ( [status] => closed ) ) )

Code:
object(stdClass)#3 (4) { ["ok"]=> bool(true) ["license"]=> string(52) "CC BY 4.0 - https://creativecommons.tankerkoenig.de" ["data"]=> string(5) "MTS-K" ["prices"]=> object(stdClass)#2 (1) { ["XXXXXXXXX"]=> object(stdClass)#19 (1) { ["status"]=> string(6) "closed" } } }
 
Code:
"prices":{"XXXXXXX":{"status":"closed"}}
Gibt halt da keinen Key/Property "diesel". Also musst du auf Vorhandensein prüfen vorher. Was übrigens die Fehlermeldung "Undefined property" sehr genau wieder gibt.


xep22 schrieb:
Aber wieso fehlen da die Preise ?
Wieso soll es bei einer geschlossenen Tankstelle auch Preise geben?
 
  • Gefällt mir
Reaktionen: kim88
aber schau doch meine JSON an, da gibts die Werte doch ??
 
Sind das deine Testdaten? Dann sind die halt nicht vollständig.
status->open hat halt prices
status->closed nicht

edit: das steht sogar so in der API-Beschreibung von tankerkoenig.de
 
  • Gefällt mir
Reaktionen: kim88
Zurück
Oben