Um die eigentliche Frage zu beantworten:
Warum verwandelt PHP das JSON-Objekt in eine Klasse?
Schauen Sie sich die Ausgabe des codierten JSON genauer an. Ich habe das Beispiel, das das OP gibt, ein wenig erweitert:
$array = array(
'stuff' => 'things',
'things' => array(
'controller', 'playing card', 'newspaper', 'sand paper', 'monitor', 'tree'
)
);
$arrayEncoded = json_encode($array);
echo $arrayEncoded;
//prints - {"stuff":"things","things":["controller","playing card","newspaper","sand paper","monitor","tree"]}
Das JSON-Format wurde vom gleichen Standard wie JavaScript ( ECMAScript Programming Language Standard ) abgeleitet. Wenn Sie sich das Format ansehen, sieht es wie JavaScript aus. Es ist ein JSON- Objekt ( {}
= Objekt ) mit einer Eigenschaft "stuff" mit dem Wert "things" und einer Eigenschaft "things", wobei der Wert ein Array von Zeichenfolgen ( []
= array) ist ) ist.
JSON (als JavaScript) kennt keine assoziativen Arrays, sondern nur indizierte Arrays.Wenn JSON ein assoziatives PHP-Array codiert, führt dies zu einer JSON-Zeichenfolge, die dieses Array als "Objekt" enthält.
Jetzt dekodieren wir den JSON erneut mit json_decode($arrayEncoded)
. Die Dekodierungsfunktion weiß nicht, woher diese JSON-Zeichenfolge stammt (ein PHP-Array), daher dekodiert sie in ein unbekanntes ObjektstdClass
in PHP befindet. Wie Sie sehen werden, wird das String-Array "things" in ein indiziertes PHP-Array dekodiert.
Siehe auch:
Vielen Dank an https://www.randomlists.com/things für die "Dinge"