定制 traineratwot/json2dto 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

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

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: GPL-3.0
  • 更新时间: 2026-02-15

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固