PHP 開発では、オブジェクトを JSON 文字列または JSON 配列オブジェクトに変換するのが非常に一般的なタスクです。 JSON 文字列オブジェクトと JSON 配列オブジェクトはどちらも、異なるプラットフォームやプログラミング言語間でのデータ交換を可能にする標準データ交換形式であり、読み取りと解析が非常に簡単です。
この記事では、PHP でオブジェクトを JSON 文字列または JSON 配列オブジェクトに変換する方法を紹介します。このプロセスを例を通して説明し、このプロセスに関連するいくつかの一般的な問題について説明します。
オブジェクトから JSON 文字列へ
PHP では、組み込みの json_encode 関数を使用してオブジェクトを JSON 文字列に変換できます。この関数はオブジェクトを引数として受け取り、その JSON 文字列表現を返します。以下は例です:
class Person { public $name; public $age; public function __construct($name, $age) { $this->name = $name; $this->age = $age; } } $person = new Person('Tom', 27); $jsonString = json_encode($person); echo $jsonString;
上記のコードを実行すると、出力が次のようになることを確認できます:
{"name":"Tom","age":27}
$person オブジェクトが JSON 文字列に正常に変換されたことがわかります。 JSON 文字列では、オブジェクト内の各プロパティはキーと値のペアに変換され、キーはプロパティの名前を使用します。
プロパティがプライベートまたは保護されている場合、json_encode 関数はプロパティにアクセスできないことに注意してください。これらの属性を JSON 文字列に含める必要がある場合は、クラス内に toArray 関数を定義して、エクスポートする必要がある属性を連想配列に変換し、この配列を json_encode 関数に渡すことができます。
class Person { private $name; private $age; public function __construct($name, $age) { $this->name = $name; $this->age = $age; } public function toArray() { return array( 'name' => $this->name, 'age' => $this->age ); } } $person = new Person('Tom', 27); $jsonString = json_encode($person->toArray()); echo $jsonString;
上記のコードを実行すると、出力結果が次のようになっていることがわかります。
{"name":"Tom","age":27}
オブジェクトから JSON 配列オブジェクトへの変換に加えて、
オブジェクトを JSON に変換する 文字列に加えて、JSON 配列オブジェクトに変換することもできます。オブジェクトを JSON 配列オブジェクトに変換する場合、各プロパティはキーと値のペアに変換され、キーにはプロパティの名前が使用されます。
PHP では、オブジェクトを配列に変換し、その配列を json_encode 関数に渡すことによって、オブジェクトを JSON 配列オブジェクトに変換できます。以下に例を示します。
class Person { public $name; public $age; public function __construct($name, $age) { $this->name = $name; $this->age = $age; } } $person = new Person('Tom', 27); $jsonArray = json_encode((array)$person); echo $jsonArray;
上記のコードを実行すると、出力が次のようになることを確認できます。
{"name":"Tom","age":27}
$person オブジェクトが JSON 配列オブジェクトに正常に変換されたことがわかります。 JSON 配列オブジェクトでは、オブジェクト内の各プロパティはキーと値のペアに変換され、キーはプロパティの名前を使用します。
オブジェクトを配列に変換する場合、プライベートまたは保護されたプロパティは無視されることに注意してください。それらを JSON 配列オブジェクトに含める必要がある場合は、オブジェクトを JSON 文字列に変換するプロセスと同様に、クラスで toArray 関数を定義することで実行できます。
FAQ
オブジェクトに他のオブジェクトが含まれている場合は、toArray 関数でこれらのオブジェクトを配列または連想配列に再帰的に変換し、これらの配列を大きな配列にマージできます。この大きな配列を json_encode 関数に渡すと、これらの配列が JSON オブジェクトまたは JSON 配列オブジェクトに再帰的に変換されます。
オブジェクトに属性が配列またはリソースである属性が含まれている場合、これらの属性を JSON オブジェクトまたは JSON 配列オブジェクトに直接変換することはできません。オブジェクトを配列に変換するプロセスでは、これらのプロパティに対して json_encode 関数を呼び出して、オブジェクトを JSON オブジェクトまたは JSON 配列オブジェクトに変換し、それらを 1 つの要素として大きな配列にマージできます。
オブジェクトに中国語の文字列が含まれている場合、json_encode 関数はデフォルトでそれらを Unicode エンコードにエンコードします。それらを UTF-8 文字列にエンコードする必要がある場合は、JSON_UNESCAPED_UNICODE オプションを json_encode 関数に渡すことができます。
class Person { public $name; public $age; public function __construct($name, $age) { $this->name = $name; $this->age = $age; } } $person = new Person('李四', 27); $jsonString = json_encode($person->toArray(), JSON_UNESCAPED_UNICODE); echo $jsonString;
上記のコードを実行すると、次のような出力が得られることがわかります。
{"name":"李四","age":27}
PHP 開発では、オブジェクトを JSON 文字列または JSON 配列オブジェクトに変換するのが基本的なタスクです。この記事では、PHP でこのプロセスを実装する方法を紹介し、このプロセスに関連するいくつかの一般的な問題について説明します。PHP 開発者の役に立つことを願っています。
以上がPHP オブジェクトから JSON 文字列配列オブジェクトへの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。