PHP 配列を JSON に変換するための 2 つの新しいメソッドがあります: JsonSerializable インターフェイス: オブジェクトが独自の JSON 表現を定義できるようにします。 JSONEncodeReplaceFlags: Unicode エスケープ シーケンスをエスケープしない JSON_UNESCAPED_UNICODE などの特殊文字の処理を制御します。
PHP 配列を JSON に解析する新しい方法
PHP で配列を JSON 文字列に変換するのは一般的なタスクです。従来の json_encode()
関数はこの機能を提供しますが、近年、追加の機能とパフォーマンス上の利点を提供する新しいメソッドが登場しています。
JsonSerializable インターフェイス
PHP 5.4 では、オブジェクトが独自の JSON 表現を定義できるようにする JsonSerializable
インターフェイスが導入されました。このインターフェイスを実装するには、オブジェクトは、JSON に変換されるデータを返す jsonSerialize()
メソッドを実装する必要があります。例:
class Person implements JsonSerializable { private $name; private $age; public function __construct($name, $age) { $this->name = $name; $this->age = $age; } public function jsonSerialize() { return [ 'name' => $this->name, 'age' => $this->age ]; } }
次のように、json_encode()
関数を使用して、Person
オブジェクトを JSON に変換できます。 jsonSerialize( )
JSONEncodeReplaceFlags
PHP 7.4 では、変換中の特殊文字の処理を制御できる JSONEncodeReplaceFlags
オプションが導入されました。このオプションは、次のようにjson_encode() 関数とともに使用できます。
$person = new Person('John Doe', 30); $json = json_encode($person);
この例では、
JSON_UNESCAPED_UNICODE フラグを使用してエスケープ シーケンスを保持し、次の JSON: $array = ['a' => "\u00A0", 'b' => "\n"]; $json = json_encode($array, JSON_UNESCAPED_UNICODE);
実際のケース: RESTful API
RESTful API を構築する場合、クライアントのリクエストに応答するために、多くの場合、PHP 配列を JSON に変換する必要があります。 JsonSerializable
インターフェイスとJSON_UNESCAPED_SLASHES フラグを使用した例を次に示します。
{ "a": "\u00A0", "b": "\n" }
このコードは、スラッシュをエスケープしない JSON 応答を生成します。 URL またはパスを含む応答。
以上がPHP 配列を JSON に解析する新しい方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。