php - 为什么会出现 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即将到来,我该如何更改为用户
解决方案
没有直接的方法可以在类对象中获取数据,要么您需要使用自定义方法进行解码,否则您可以在解码时使用 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 的更多信息,请参见此处。
推荐阅读
- reactjs - 如何为反应元素添加参考(节点reactNode!)
- javascript - 将图像动画输出,将其附加到结尾,将其淡入...无休止地重复
- excel - 使用 VBA 引用数据透视表数据
- powershell - 分析 w3wp.exe 进程选项
- android - 在 Android 8.1.0 Mi A1 中从相机和图库加载图像不起作用
- resize - Windows - 调整壁纸大小,除非
- javascript - 为什么不响应代理请求
- python-3.x - 无法使用 python 3.7 安装机器人框架
- php - Composer包在安装时复制目录
- php - 将列表中的数据插入mysql数据库