Предположим, у нас есть простой объект для сериализации с вложенным объектом:
class User implements \JsonSerializable { private $name; private $email; private $address; public function jsonSerialize() { return [ 'name' => $this->name, 'email' => $this->email, 'address' => $this->address ]; } }
Вложенный объект:
class Address implements \JsonSerializable { private $city; private $state; public function jsonSerialize() { return [ 'city' => $this->city, 'state' => $this->state ]; } }
Мы используем json_encode()
для сериализации, это будет использовать изначально JsonSerializable :: jsonSerialize () :
$json = json_encode($user);
Если $name
и $state
имеют значение null, как это сделать:
{ "email": "john.doe@test.com", { "city": "Paris" } }
вместо этого:
{ "name": null, "email": "john.doe@test.com", { "city": "Paris", "state": null } }