json_decode in ein Array

Lesezeit: 4 Minuten

json decode in ein Array
Harsha MV

Ich versuche, eine JSON-Zeichenfolge in ein Array zu decodieren, erhalte jedoch die folgende Fehlermeldung.

Schwerwiegender Fehler: Objekt vom Typ stdClass kann nicht als Array in C:\wamp\www\temp\asklaila.php in Zeile 6 verwendet werden

Hier ist der Code:

<?php
$json_string = 'http://www.domain.com/jsondata.json';

$jsondata = file_get_contents($json_string);
$obj = json_decode($jsondata);
print_r($obj['Result']);
?>

  • Es hätte funktioniert, wenn du mit zugegriffen hättest $ob->Result stattdessen.

    – Lappen

    26. April 2018 um 7:56 Uhr

1646983447 666 json decode in ein Array
Stefan

Gem die Dokumentationmüssen Sie angeben true als zweites Argument, wenn Sie statt eines Objekts ein assoziatives Array wünschen json_decode. Das wäre der Code:

$result = json_decode($jsondata, true);

Falls Sie es wollen integer Schlüssel anstelle der Eigenschaftsnamen:

$result = array_values(json_decode($jsondata, true));

Mit Ihrer aktuellen Dekodierung greifen Sie jedoch nur als Objekt darauf zu:

print_r($obj->Result);

  • Es stellt sich die Frage, was sind die Vorteile, wenn es als Array und nicht als Objekt zurückgegeben wird?

    – Foxinni

    16. August 2012 um 13:31 Uhr

  • Es wirft die Frage auf. „Eine Frage stellen“ bedeutet, etwas anzunehmen, das noch zu beweisen ist (Ref). In beiden Fällen könnte der Vorteil darin bestehen, dass das OP komfortabler ist, Arrays als Objekte zu durchlaufen, oder dass ein anderer, bereits implementierter Code ein Array erfordert.

    – Jamesnotjim

    6. März 2013 um 15:31 Uhr


  • @jamesnotjim Die Standardimplementierung, die ein Objekt zurückgibt, könnte die Frage aufwerfen, dass Objekte bessere Rückgabewerte als Arrays sind, oder nicht?

    – David Mann

    13. November 2013 um 2:43 Uhr

  • In der Tat könnte es @DavidMann. Touche!

    – Jamesnotjim

    13. November 2013 um 18:53 Uhr

  • Ich würde den Kommentar hinzufügen (wenn auch Jahre später), dass es keine Möglichkeit gibt, dass JSON irgendetwas anderes als Daten enthält, was dies zu einer verwirrenden „Standard“-Wahl macht.

    – Barri

    25. Juli 2016 um 16:13 Uhr

json decode in ein Array
dieEcho

Versuche dies

$json_string = 'http://www.domain.com/jsondata.json';
$jsondata = file_get_contents($json_string);
$obj = json_decode($jsondata,true);
echo "<pre>";
print_r($obj);

Dies ist ein verspäteter Beitrag, aber es gibt einen triftigen Grund für das Casting json_decode mit (array).
Folgendes berücksichtigen:

$jsondata="";
$arr = json_decode($jsondata, true);
foreach ($arr as $k=>$v){
    echo $v; // etc.
}

Wenn $jsondata wird immer als leerer String zurückgegeben (wie es meiner Erfahrung nach oft der Fall ist), json_decode wird zurückkehren NULLwas zu dem Fehler führt Warnung: Ungültiges Argument für foreach() in Zeile 3 angegeben. Sie könnten eine Zeile mit Wenn/Dann-Code oder einen ternären Operator hinzufügen, aber meiner Meinung nach ist es sauberer, Zeile 2 einfach in … zu ändern.

$arr = (array) json_decode($jsondata,true);

… es sei denn, Sie sind es json_decodeWenn Sie Millionen großer Arrays gleichzeitig verwenden, kann die Leistung in diesem Fall, wie @TCB13 betont, negativ beeinflusst werden.

Nur für den Fall, dass Sie mit PHP kleiner als 5.2 arbeiten, können Sie diese Ressource verwenden.

http://techblog.willshouse.com/2009/06/12/using-json_encode-and-json_decode-in-php4/

http://mike.teczno.com/JSON/JSON.phps

Entsprechend der PHP-Dokumentation json_decode Die Funktion hat einen Parameter namens assoziiert die die zurückgegebenen Objekte in assoziative Arrays umwandeln

 mixed json_decode ( string $json [, bool $assoc = FALSE ] )

Seit assoziiert Parameter ist FALSE Standardmäßig müssen Sie diesen Wert auf einstellen TRUE um ein Array abzurufen.

Untersuchen Sie den folgenden Code auf eine beispielhafte Implikation:

$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
var_dump(json_decode($json));
var_dump(json_decode($json, true));

was ausgibt:

object(stdClass)#1 (5) {
    ["a"] => int(1)
    ["b"] => int(2)
    ["c"] => int(3)
    ["d"] => int(4)
    ["e"] => int(5)
}

array(5) {
    ["a"] => int(1)
    ["b"] => int(2)
    ["c"] => int(3)
    ["d"] => int(4)
    ["e"] => int(5)
}

1646983448 682 json decode in ein Array
Coreyavis

Dadurch wird es auch in ein Array umgewandelt:

<?php
    print_r((array) json_decode($object));
?>

1646983448 640 json decode in ein Array
Fehler

json_decode zweites Argument unterstützen, wenn es auf gesetzt ist TRUE es wird ein zurückgegeben Array anstatt stdClass Object. Überprüf den Handbuch Seite von json_decode Funktion, um alle unterstützten Argumente und ihre Details anzuzeigen.

Versuchen Sie zum Beispiel Folgendes:

$json_string = 'http://www.example.com/jsondata.json';
$jsondata = file_get_contents($json_string);
$obj = json_decode($jsondata, TRUE); // Set second argument as TRUE
print_r($obj['Result']); // Now this will works!

990200cookie-checkjson_decode in ein Array

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy