実際の質問に答えるには:
PHPがJSONオブジェクトをクラスに変換するのはなぜですか?
エンコードされたJSONの出力を詳しく見てみましょう。OPが提供する例を少し拡張しました。
$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"]}
JSON形式はJavaScriptと同じ標準(ECMAScriptプログラミング言語標準)から派生したものであり、形式を見るとJavaScriptのように見えます。これは、「things」という値を持つ「stuff」というプロパティを持つJSON オブジェクト({}
=オブジェクト)であり、その値が文字列の配列である「things」というプロパティを持つ([]
= array)。
JSON(JavaScriptとして)では、連想配列はインデックス付き配列のみを認識しません。そのため、PHPの連想配列をJSONエンコードすると、この配列を「オブジェクト」として含むJSON文字列が生成されます。
次に、を使用してJSONを再度デコードしますjson_decode($arrayEncoded)
。デコード関数は、このJSON文字列がどこから発生したか(PHP配列)を認識していないため、PHP内の不明なオブジェクトにデコードしていますstdClass
。ご覧のとおり、文字列の "things"配列はインデックス付きのPHP配列にデコードされます。
こちらもご覧ください:
「もの」のためのhttps://www.randomlists.com/thingsに感謝