JSON to Zod
Generate Zod schemas from JSON
Параметры схемы
Экспортируется как const. Выведенный тип экспортируется как Root.
Исходный JSON
Ограничения: 5 MiB на файл или 5 242 880 символов, 256 уровней вложенности.
Схема Zod
Проверяются все элементы массивов: разные типы превращаются в z.union(...), а ключи, отсутствующие в части объектов, — в .optional(). Считайте результат отправной точкой и уточните его форматами, enum или ограничениями.
Что делает JSON to Zod
JSON to Zod превращает пример JSON в схему Zod для проверки данных во время выполнения в TypeScript. Сначала JSON выводится в независимое от библиотеки дерево схемы, а затем генерируется код Zod: строки, числа, логические значения, null, вложенные объекты, массивы и массивы объектов. Скачиваемый файл — готовый модуль .ts с import { z } from "zod", экспортируемой схемой и типом, построенным через z.infer.
Как пользоваться
- 1.Вставьте пример JSON, загрузите файл .json, перетащите его в редактор или загрузите пример.
- 2.Задайте имя корневой схемы, например UserSchema; экспортируемый тип будет называться User.
- 3.Просмотрите сгенерированный код и предупреждения о неопределённых типах.
- 4.Скопируйте код или скачайте его как файл .ts. «Очистить» очищает редактор.
Как выводятся типы
- •Проверяются все элементы массива, а не только первый. Элементы разных видов превращаются в z.union([...]).
- •Объекты в одном массиве объединяются: ключ, которого нет в части объектов, становится .optional(), а ключ, иногда равный null, — объединением с z.null().
- •Пустой массив не даёт сведений, поэтому его элементы — z.unknown(), и показывается предупреждение.
- •Значение, которое всегда равно null, остаётся z.null() с предупреждением: настоящий тип по примеру определить нельзя.
- •Ключи всегда берутся в кавычки, поэтому имена вроде "user-id" или "__proto__" обрабатываются безопасно.
Ограничения и точность
Пример показывает, как данные выглядели однажды, а не полный контракт. Добавьте форматы (email, url, datetime), enum, min/max или .strict() сами, если ваш API это гарантирует. Целые числа за пределами безопасного диапазона JavaScript помечаются, поскольку при разборе теряют точность. Ввод ограничен 5 MiB и 256 уровнями вложенности, а вся обработка выполняется в браузере.
