traineratwot/json2dto
最新稳定版本:1.3.5
Composer 安装命令:
composer create-project traineratwot/json2dto
包简介
Convert JSON files to Spatie DTO objects
README 文档
README
Инструмент для генерации DTO-классов на основе JSON-данных с поддержкой вложенных DTO, сборки multipart-структур и валидационных атрибутов от Spatie Laravel Data.
Установка / Installation
# Установить глобально composer global require traineratwot/json2dto # Установить в проекте (для локального использования) composer require traineratwot/json2dto --dev
Использование / Usage
Запускайте инструмент из корня проекта (там, где находится composer.json), чтобы правильно разрешить пространства имён через PSR-4. Ввод JSON принимается из файла (второй аргумент) или из stdin.
json2dto generate [options] [--] <namespace> [<json>]
Примеры / Examples
# Генерация DTO с PHP 7.4 типизацией ./vendor/bin/json2dto generate "App\DTO" test.json --classname "Test" --typed # Генерация DTO с вложенными DTO и всеми полями nullable ./vendor/bin/json2dto generate "App\DTO" test.json --classname "Test" --nested --optional # Генерация объединённого DTO для массива объектов (multipart) ./vendor/bin/json2dto generate "App\DTO" tests.json --classname "TestCollection" --multipart # Использование stdin cat test.json | ./vendor/bin/json2dto generate "App\DTO" --classname "Test"
Опции / Options
| Опция | Описание / Description |
|---|---|
--classname, -name |
Название корневого DTO-класса (NewDto по умолчанию) / Root DTO class name (NewDto by default) |
--nested |
Генерировать вложенные DTO для объектов и массивов объектов / Generate nested DTOs for nested objects and collections |
--typed |
Использовать PHP-типы для свойств конструктора (>=7.4) / Enable PHP typed properties (>=7.4) |
--optional |
Сделать все поля nullable с значением по умолчанию null / Make every field optional (nullable with default null) |
--multipart |
Слить массив объектов в один DTO, объединяя все поля / Merge array of objects into a single DTO covering all variants |
--dry |
Показать сгенерированные файлы вместо записи на диск / Dry run — print generated files instead of writing them |
Поведение / Behavior
- В режиме
--multipartвходной JSON должен быть массивом объектов. Генерируется DTO, где каждое поле становится опциональным, если отсутствует в каком-то объекте или встречалось какnull. - Ключи, не соответствующие camelCase, автоматически нормализуются, а оригинальные имена мапятся через атрибуты
MapInputName/MapOutputName. - При генерации без
--nestedвложенные объекты остаются типизированными какmixed, но при включении--typedдобавляются соответствующие типы и атрибуты валидации от Spatie Laravel Data. - Строки анализируются на наличие email, URL, UUID, ISO-дат и IP, чтобы добавить соответствующие атрибуты валидации.
Примечания / Notes
- Инструмент работает с PSR-4 пространства имён и создает файлы согласно разрешению namespace → папка. Если в проекте нет
composer.json, файлы будут помещены в текущую директорию. - Для работы генерации атрибутов требуется установленный пакет
spatie/laravel-data.
统计信息
- 总下载量: 61
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 2
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: GPL-3.0
- 更新时间: 2026-02-15