PHPackages                             traineratwot/json2dto - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Parsing &amp; Serialization](/categories/parsing)
4. /
5. traineratwot/json2dto

ActiveProject[Parsing &amp; Serialization](/categories/parsing)

traineratwot/json2dto
=====================

Convert JSON files to Spatie DTO objects

1.3.5(2mo ago)050GPL-3.0PHPPHP &gt;=8.2

Since Feb 15Pushed 2mo agoCompare

[ Source](https://github.com/Traineratwot/json2dto-cli)[ Packagist](https://packagist.org/packages/traineratwot/json2dto)[ Docs](https://github.com/traineratwot/json2dto)[ RSS](/packages/traineratwot-json2dto/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (7)Dependencies (7)Versions (8)Used By (0)

Json2Dto
========

[](#json2dto)

Инструмент для генерации DTO-классов на основе JSON-данных с поддержкой вложенных DTO, сборки multipart-структур и валидационных атрибутов от Spatie Laravel Data.

Установка / Installation
------------------------

[](#установка--installation)

```
# Установить глобально
composer global require traineratwot/json2dto

# Установить в проекте (для локального использования)
composer require traineratwot/json2dto --dev
```

Использование / Usage
---------------------

[](#использование--usage)

Запускайте инструмент из корня проекта (там, где находится `composer.json`), чтобы правильно разрешить пространства имён через PSR-4. Ввод JSON принимается из файла (второй аргумент) или из stdin.

```
json2dto generate [options] [--]  []
```

### Примеры / Examples

[](#примеры--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
---------------

[](#опции--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-типы для свойств конструктора (&gt;=7.4) / Enable PHP typed properties (&gt;=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
--------------------

[](#поведение--behavior)

- В режиме `--multipart` входной JSON должен быть массивом объектов. Генерируется DTO, где каждое поле становится опциональным, если отсутствует в каком-то объекте или встречалось как `null`.
- Ключи, не соответствующие camelCase, автоматически нормализуются, а оригинальные имена мапятся через атрибуты `MapInputName`/`MapOutputName`.
- При генерации без `--nested` вложенные объекты остаются типизированными как `mixed`, но при включении `--typed` добавляются соответствующие типы и атрибуты валидации от Spatie Laravel Data.
- Строки анализируются на наличие email, URL, UUID, ISO-дат и IP, чтобы добавить соответствующие атрибуты валидации.

Примечания / Notes
------------------

[](#примечания--notes)

- Инструмент работает с PSR-4 пространства имён и создает файлы согласно разрешению namespace → папка. Если в проекте нет `composer.json`, файлы будут помещены в текущую директорию.
- Для работы генерации атрибутов требуется установленный пакет `spatie/laravel-data`.

###  Health Score

41

—

FairBetter than 89% of packages

Maintenance84

Actively maintained with recent releases

Popularity11

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity51

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

7

Last Release

83d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/258daf0924571b74f805d1928446978bc93dd75265197ae9ac7dac47c70ddd83?d=identicon)[Traineratwot](/maintainers/Traineratwot)

---

Top Contributors

[![Traineratwot](https://avatars.githubusercontent.com/u/41589091?v=4)](https://github.com/Traineratwot "Traineratwot (14 commits)")

---

Tags

jsonspatielaravelconverterdto

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/traineratwot-json2dto/health.svg)

```
[![Health](https://phpackages.com/badges/traineratwot-json2dto/health.svg)](https://phpackages.com/packages/traineratwot-json2dto)
```

###  Alternatives

[spatie/laravel-markdown

A highly configurable markdown renderer and Blade component for Laravel

4053.4M35](/packages/spatie-laravel-markdown)[sbsaga/toon

🧠 TOON for Laravel — a compact, human-readable, and token-efficient data format for AI prompts &amp; LLM contexts. Perfect for ChatGPT, Gemini, Claude, Mistral, and OpenAI integrations (JSON ⇄ TOON).

6115.6k](/packages/sbsaga-toon)[json-mapper/laravel-package

The JsonMapper package for Laravel

25170.4k3](/packages/json-mapper-laravel-package)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
