如果我将相对于我定义的类的对象的 JSON 字符串传递给 json_decode() 函数,它会返回一个 stdClass 对象(然后丢失方法)而不是原始类对象......有什么建议吗?
问问题
457 次
4 回答
1
尝试序列化()和反序列化()
于 2012-05-15T10:08:04.787 回答
1
JSON 是一种数据格式,而不是代码格式。您应该使用解码的 JSON 数据初始化您的对象,而不是期望直接创建它们。想想为什么 PHP 对象的序列化函数可以实现 __sleep 和 __wakeup 方法。
于 2012-05-15T10:08:32.317 回答
1
JSON 不携带有关对象类型(类)的信息,它是 Javacript 对象文字。它携带的唯一信息是属性的名称和值。
如果您想将 PHP 对象编码为字符串,以便可以将其转换回正确类型的 PHP 对象,您将需要serialize()
它。
于 2012-05-15T10:09:11.310 回答
1
PHP 如何知道您的 JSON 来自哪里或您打算如何使用它?JSON 本身不携带任何此类信息,json_decode
也不提供任何此类功能。
如果您希望您的类实例可序列化为 JSON,您将需要手动填写空白,可能从以下内容开始:
class Foo {
public function toJSON() {
return json_encode($this);
}
public static function fromJSON($json) {
$obj = json_decode($json);
$foo = new Foo;
foreach ($obj as $prop => $value) {
$foo->$prop = $value;
}
return $foo;
}
}
于 2012-05-15T10:11:04.470 回答