ホームページ > バックエンド開発 > PHPチュートリアル > 5.4 より前の PHP バージョンで PHP オブジェクトを JSON にシリアル化する方法は?

5.4 より前の PHP バージョンで PHP オブジェクトを JSON にシリアル化する方法は?

Barbara Streisand
リリース: 2024-10-27 14:13:01
オリジナル
931 人が閲覧しました

How to Serialize PHP Objects to JSON in PHP Versions Below 5.4?

PHP バージョン 5.4 未満での PHP オブジェクトの JSON へのシリアル化

PHP の JsonSerializable インターフェイスは、オブジェクトを JSON にシリアル化する便利な方法を提供しますが、それは単にバージョン 5.4 以降で利用可能です。 PHP バージョン 5.3 以前の場合、同じ機能を実現するには別のメソッドを使用する必要があります。

そのようなメソッドの 1 つは、オブジェクトを JSON にシリアル化する前に配列に変換することです。再帰的アプローチを使用して、オブジェクトのプロパティを走査し、対応する配列を生成できます。ただし、このアプローチは複雑になる可能性があり、オブジェクトがそれ自体を参照する場合に再帰の問題が発生する可能性があります。

より簡単な方法は、オブジェクト クラスの __toString() マジック メソッドをオーバーライドすることです。オブジェクトの JSON 表現を返すこのメソッドを定義すると、json_encode() を使用してオブジェクトを JSON に直接シリアル化できます。

<code class="php">class Mf_Data {

    public function __toString() {
        return json_encode($this->toArray());
    }

    public function toArray() {
        $array = get_object_vars($this);
        unset($array['_parent'], $array['_index']);
        array_walk_recursive($array, function (&$property) {
            if (is_object($property)) {
                $property = $property->toArray();
            }
        });
        return $array;
    }

}</code>
ログイン後にコピー

このアプローチでは、複雑なツリーノード オブジェクトを次のように変換することでシリアル化できます。配列を取得してから JSON に変換します。オブジェクト参照は、シリアル化する前に配列から削除することで処理されます。さらに、結果の JSON がオブジェクトの有効な表現であることを保証します。

以上が5.4 より前の PHP バージョンで PHP オブジェクトを JSON にシリアル化する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート