プライベートメンバーを使用した PHP オブジェクトの JSON エンコード
PHP の json_encode 関数は、オブジェクトを JSON 形式にシリアル化する便利な方法を提供します。ただし、プライベート クラス メンバーに格納されたデータを扱う場合は問題が発生する可能性があります。
この制限を克服するには、カスタム エンコード関数を使用できます。
public function encodeJSON() { foreach ($this as $key => $value) { $json->$key = $value; } return json_encode($json); }
このソリューションはオブジェクトに対して機能します。ネストされたオブジェクトがないと、メイン オブジェクト内のネストされたオブジェクトのエンコードに失敗します。
解決策: JsonSerializable Interface
最も効果的なアプローチは、JsonSerializable を実装し、シリアル化を制御するための jsonSerialize メソッドを定義することです。 jsonSerialize メソッドは、シリアル化する必要があるデータを返す必要があります。
class Item implements \JsonSerializable { private $var; private $var1; private $var2; // ... constructors and other methods ... public function jsonSerialize() { $vars = get_object_vars($this); return $vars; } }
JsonSerializable が実装されていると、json_encode はオブジェクトを正しくシリアル化します。 、ネストされたオブジェクトも含みます。
以上がPHP で JSON エンコーディングを使用してプライベート メンバーのオブジェクトを処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。