JSON в TypeScript 🔒 Работает локально в браузере — ничего не загружается.

Генерируйте интерфейсы TypeScript из образца JSON.

 

Об этом инструменте

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

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

Частые вопросы

Отправляются ли куда-то мои данные JSON?

Нет. Разбор и вывод типов полностью выполняются в JavaScript вашего браузера — ваш JSON никогда не покидает устройство.

Как обрабатывается массив, где объекты имеют разные поля?

Он объединяет ключи всех объектов массива в один интерфейс; любой ключ, отсутствующий хотя бы в одном объекте, помечается как необязательный знаком `?`, а не отбрасывается.

Что происходит с массивом смешанных типов, например чисел и строк?

Он создаёт объединённый тип массива вроде `(string | number)[]`, так что форма по-прежнему отражает каждое значение, реально встреченное в образце.

Можно ли генерировать псевдонимы типов (type) вместо интерфейсов?

Да, включите 'as type', чтобы каждый сгенерированный `interface Name {}` превратился в `type Name = {}` — полезно, если в вашей кодовой базе принято использовать псевдонимы типов.

Что произойдёт, если я вставлю невалидный JSON?

Инструмент покажет сообщение об ошибке с точной строкой и столбцом проблемы и позволит сразу перейти к ней, вместо общего сообщения 'invalid JSON'.

Обрабатывает ли он вложенные объекты и массивы, а не только плоский JSON?

Да. Вложенный объект превращается в собственный именованный интерфейс, имя берётся из родительского ключа (например, `profile: {...}` даёт интерфейс `Profile`), а имена массивов переводятся в единственное число (`roles` → `Role[]`). Массив объектов создаёт один интерфейс, общий для всех элементов, с `?` на полях, которые есть не у всех — а не отдельный интерфейс для каждого элемента.