Перейти к содержанию

JSON в PHP класс

Преобразуйте JSON образец в типизированный PHP класс с конструктором, fromArray и toArray.

Входные данные
Выходные данные

JSON в PHP класс

Вставьте JSON объект или массив, и этот инструмент определит тип каждого поля, затем сгенерирует готовый к использованию PHP класс: типизированные свойства, конструктор, статический фабричный метод fromArray() и метод toArray() для преобразования объекта обратно в обычный массив. Вложенные объекты автоматически становятся собственными классами, и одинаковые структуры повторно используются вместо дублирования, так что нагрузка с несколькими похожо структурированными разделами всё ещё производит компактный файл.

Имя класса и пространство имён называют корневой класс и опционально оборачивают его в PHP пространство имён. Promoted конструктор PHP 8 записывает свойства непосредственно в сигнатуру конструктора вместо их отдельного объявления — отключите его для классического явного конструктора. Генерировать геттеры и сеттеры добавляет методы доступа (isX() для логических значений, getX()/setX() для остальных) вместо прямого доступа к свойствам. declare(strict_types=1) добавляет заголовок строгих типов PHP, а комментарии docblock аннотируют каждое свойство его предполагаемым типом. Поля массива определяют, типизируется ли список как обычный массив или задокументирован типом его элементов, например string[], так как PHP не имеет дженериков для этого в подсказке типов.

Поле, которое видится как null или отсутствует в некоторых элементах массива объектов, генерируется как nullable — с безопасной проверкой isset() когда необходимо построить вложенный объект или отобразить список, и null-coalescing по умолчанию в противном случае. Ключ, который конфликтует с зарезервированным словом PHP или начинается с цифры, переименовывается в валидное имя свойства, и каждое сгенерированное свойство сохраняет исходный JSON ключ как свой ключ массива в fromArray() и toArray().

Всё работает локально в вашем браузере — JSON который вы вставляете, может включать реальные ответы API или данные конфигурации, никогда не загружается никуда. Скопируйте сгенерированный класс, загрузите его как файл .txt или отправьте результат обратно на вход для дальнейшего уточнения.

FAQ

На какую версию PHP рассчитан сгенерированный код?
PHP 8.0 или позже, так как promoted свойства конструктора и тип mixed это фичи PHP 8. Отключите опцию promoted-constructor если вам нужен вывод совместимый с PHP 7.
Как обрабатываются вложенные объекты?
Каждая отличная структура объекта становится своим классом с собственными методами fromArray() и toArray(). Два поля с одинаковой структурой повторно используют один и тот же сгенерированный класс вместо дублирования.
Что происходит с полем, которое иногда равно null или отсутствует?
Оно генерируется как nullable типизированное свойство. Скаляры по умолчанию null с null-coalescing оператором; вложенные объекты и списки объектов используют проверку isset() чтобы fromArray() никогда не вызывал метод на отсутствующих данных.
Могу ли я сгенерировать несколько классов из одного JSON образца?
Да. Каждый вложенный объект в образце создаёт свой собственный класс в одном файле, в порядке зависимостей, так что файл готов к использованию как есть.
Мой JSON загружается куда-либо?
Нет. Генерирование класса работает полностью в вашем браузере — ваш JSON никогда не покидает ваше устройство.