Aby odpowiedzieć na rzeczywiste pytanie:
Dlaczego PHP zamienia obiekt JSON w klasę?
Przyjrzyj się bliżej wynikowi zakodowanego JSON, rozszerzyłem przykład, który OP daje trochę:
$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"]}
Format JSON wywodzi się z tego samego standardu co JavaScript ( standard języka programowania ECMAScript ) i jeśli spojrzeć na format, wygląda jak JavaScript. Jest to obiekt JSON ( {}
= obiekt ) posiadający właściwość „stuff” o wartości „things” oraz właściwość „things”, której wartością jest tablica ciągów ( []
= tablica ).
JSON (jako JavaScript) nie zna tablic asocjacyjnych tylko tablice indeksowane. Więc kiedy JSON koduje tablicę asocjacyjną PHP, da to ciąg JSON zawierający tę tablicę jako „obiekt”.
Teraz ponownie dekodujemy JSON przy użyciu json_decode($arrayEncoded)
. Funkcja dekodowania nie wie, skąd pochodzi ten ciąg JSON (tablica PHP), więc dekoduje do nieznanego obiektu, który znajduje się stdClass
w PHP. Jak zobaczysz, tablica łańcuchów „things” BĘDZIE dekodowana do indeksowanej tablicy PHP.
Zobacz także:
Dzięki https://www.randomlists.com/things za „rzeczy”