if i pass to the json_decode() function a JSON string relative to an object of a class defined by me, it returns a stdClass object (then loses the methods) instead of original class object...any suggestions?
質問する
457 次
4 に答える
1
JSON がどこから来たのか、またはそれをどのように使用するつもりなのか、PHP はどのように知るのでしょうか? 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 に答える
1
JSON は、オブジェクトのタイプ (クラス) に関する情報を持ちません。これは Javacript オブジェクト リテラルです。それが運ぶ唯一の情報は、プロパティの名前と値です。
PHP オブジェクトを正しいタイプの PHP オブジェクトに変換できるように文字列にエンコードする場合は、それが必要にserialize()
なります。
于 2012-05-15T10:09:11.310 に答える