JSON в TypeScript

Сгенерировать интерфейсы TypeScript или схемы Zod из образца JSON
  • Файлы не покидают устройство
  • Работает в браузере
  • Бесплатно, без регистрации и водяных знаков

Objects in the same array are merged: keys missing from some items become optional, and differing value types become unions. Identical shapes share one type.

Как пользоваться: JSON в TypeScript

Вставьте образец JSON и получите интерфейсы TypeScript, схему Zod или JSON Schema. Объекты в массивах сливаются, поэтому ключи, которых нет у части элементов, становятся необязательными, а смешанные типы — объединениями. Всё выполняется локально в браузере.

  1. 1

    Вставьте образец JSON в поле JSON, перетащите файл или нажмите «Образец».

  2. 2

    Выберите вывод: TypeScript, Zod или JSON Schema и задайте имя корня.

  3. 3

    Выберите, как типизируются значения null, а для TypeScript — объявлять как interface или type.

  4. 4

    Включите «Распознавать строки дат», «Свойства только для чтения» или «Запретить лишние свойства» по необходимости, затем скопируйте или скачайте результат.

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

Отправляется ли JSON куда-либо?

Нет. Генерация типов идёт в браузере, поэтому ответы API с реальными данными остаются на устройстве.

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

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

В чём разница T | null и «Необязательный + null»?

T | null оставляет ключ обязательным, но допускает null. «Необязательный + null» также позволяет ключ опустить, что подходит API, которые выкидывают поля null.

Распознаёт ли он даты?

При включённом «Распознавать строки дат» строки ISO 8601 получают комментарий в TypeScript, валидатор datetime в Zod и format в JSON Schema.

Можно ли вставить JSON с комментариями или висячими запятыми?

Да. Ввод разбирается мягко, поэтому комментарии, висячие запятые и синтаксис JSON5 принимаются, и примечание говорит, когда это произошло.