JsonSerializable
Интерфейс, определяющий, как объект превращается в JSON.
Синтаксис
class Name implements JsonSerializableВозвращаемое значение
mixedМетод `jsonSerialize()` возвращает данные для кодирования.
Примеры
Скрыть лишние свойства:
<?php
class User implements JsonSerializable
{
public function __construct(private string $name, private string $password) {}
public function jsonSerialize(): array
{
return ['name' => $this->name];
}
}
echo json_encode([new User('Anna', 'secret'), new User('Oleg', 'qwerty')]);Результат:
[{"name":"Anna"},{"name":"Oleg"}]Примечания
Без интерфейса json_encode() выводит только открытые свойства, и закрытые данные в ответ не попадают — но и нужные тоже.
См. также
- json_encode — Преобразует значение в строку JSON.
- Stringable — Интерфейс объектов, которые можно превратить в строку.
- get_object_vars — Возвращает доступные свойства объекта в виде массива.
В учебнике
- Встроенные интерфейсы — Интерфейсы PHP, которые учат объект вести себя как массив — Countable, IteratorAggregate, ArrayAccess, JsonSerializable и Stringable.