Để trả lời câu hỏi thực tế:
Tại sao PHP biến Đối tượng JSON thành một lớp?
Hãy xem xét kỹ hơn đầu ra của JSON được mã hóa, tôi đã mở rộng ví dụ mà OP đưa ra một chút:
$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"]}
Định dạng JSON được bắt nguồn từ cùng một tiêu chuẩn với JavaScript ( Tiêu chuẩn ngôn ngữ lập trình ECMAScript ) và nếu bạn nhìn vào định dạng thì nó giống như JavaScript. Nó là một đối tượng JSON ( {}
= object ) có thuộc tính "thứ" với giá trị "things" và có thuộc tính "things" với giá trị của nó là một mảng chuỗi ( []
= mảng ).
JSON (như JavaScript) không biết mảng kết hợp chỉ các mảng được lập chỉ mục. Vì vậy, khi JSON mã hóa một mảng kết hợp PHP, điều này sẽ dẫn đến một chuỗi JSON chứa mảng này như một "đối tượng".
Bây giờ chúng tôi đang giải mã lại JSON bằng cách sử dụng json_decode($arrayEncoded)
. Hàm giải mã không biết chuỗi JSON này bắt nguồn từ đâu (một mảng PHP) nên nó đang giải mã thành một đối tượng không xác định, nằm stdClass
trong PHP. Như bạn sẽ thấy, mảng chuỗi "thứ" SẼ giải mã thành một mảng PHP được lập chỉ mục.
Cũng thấy:
Cảm ơn https://www.randomlists.com/things về 'những điều'