Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Справочник PHP

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.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.