-1

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?

4

4 に答える 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 に答える