首页 > 解决方案 > 为什么会出现 stdClass 而不是我们的自定义对象名称?

问题描述

在这里,我的班级名称是用户,当我打印班级属性时,我得到了正确的目标名称。之后,我使用 json_encode() 对数据进行了编码。然后我用 json_decode() 解码。我得到了stdClass目标,为什么?

<?php
class User
{
    public $name;
    public $age;
    public $salary;
}
    $user = new User();
    $user->name = 'Siddhu';
    $user->age = 24;
    $user->salary = 7000.80;

print_r($user);
//Output: User Object ( [name] => Siddhu [age] => 24 [salary] => 7000.8 ) 

print_r(json_encode($user));
//Output: {"name":"Siddhu","age":24,"salary":7000.8}

$d = json_encode($user);


$s = json_decode($d);
print_r($s);
//Output: stdClass Object ( [name] => Siddhu [age] => 24 [salary] => 7000.8 ) 

如果您注意到stdClass即将到来,我该如何更改为用户

标签: phpjson

解决方案


没有直接的方法可以在类对象中获取数据,要么您需要使用自定义方法进行解码,否则您可以在解码时使用 serialize() && unserialize() 函数获取类对象中的数据;

$serialized_user_object = serialize($user);

$deserialized_user_object = unserialize($serialized_user_object);

在 json_decode 中,如果要将数据作为数组,则可以在第二个参数中传递 true。像这样。

var_dump(json_decode($json, true));

要了解有关 json_decode 的更多信息,请参见此处


推荐阅读