495 Stimmen

json_decode zu Array

Ich versuche, eine JSON-Zeichenfolge in ein Array zu dekodieren, aber ich erhalte den folgenden Fehler.

Fataler Fehler: Kann kein Objekt vom Typ stdClass als Array in C:\wamp\www\temp\asklaila.php im Netz 6

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']);
?>

979voto

Stephen Punkte 17921

Gemäß die Dokumentation müssen Sie Folgendes angeben true als zweites Argument, wenn Sie ein assoziatives Array anstelle eines Objekts aus json_decode . Dies wäre der Code:

$result = json_decode($jsondata, true);

Wenn Sie wollen integer Schlüssel anstelle der Eigenschaftsnamen:

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

Mit der aktuellen Dekodierung greifen Sie jedoch einfach als Objekt darauf zu:

print_r($obj->Result);

49voto

diEcho Punkte 51956

Versuchen Sie 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);

31voto

neokio Punkte 5155

Dies ist ein verspäteter Beitrag, aber es gibt triftige Gründe für die Besetzung json_decode con (array) .
Bedenken Sie Folgendes:

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

Si $jsondata als leere Zeichenkette zurückgegeben wird (was meiner Erfahrung nach häufig der Fall ist), json_decode wird zurückgegeben NULL , was zu dem Fehler Warnung: Ungültiges Argument für foreach() in Zeile 3 . Sie könnten eine Zeile mit if/then-Code oder einen ternären Operator hinzufügen, aber IMO ist es sauberer, Zeile 2 einfach in ... zu ändern.

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

... es sei denn, Sie sind json_decode In diesem Fall könnte, wie @TCB13 anmerkt, die Leistung negativ beeinflusst werden.

6voto

Anuj Pandey Punkte 928

Nur für den Fall, dass Sie auf php weniger 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

6voto

Arosha De Silva Punkte 527

Nach Angaben der PHP-Dokumentation json_decode Funktion hat einen Parameter namens assoc die die zurückgegebenen Objekte in assoziative Arrays umwandeln

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

Desde assoc Parameter ist FALSE standardmäßig, Sie müssen diesen Wert auf TRUE um ein Array abzurufen.

Der folgende Code zeigt ein Beispiel für eine Implikation:

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

die 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)
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X