Для разработчиков / Типы

Конвертер JSON в схему Zod

Создайте схему Zod и соответствующий тип TypeScript на основе примера JSON — с вложенными объектами, массивами, необязательными и допускающими null полями, а также целыми числами.

Конвертер JSON в схему Zod: Каждый объект в примере преобразуется в схему z.object, экспортируемую вместе с выведенным из неё типом, а вложенные объекты получают собственные именованные схемы. Объекты в массиве объединяются: для ключей, отсутствующих в некоторых объектах, добавляется .optional(), для ключей, значениями которых иногда бывает null, — .nullable(), а для целых чисел — .int(). Созданные схемы проверены разбором собственных примеров с помощью Zod. Работает на 100% локально в вашем браузере, файлы на сервер не загружаются.

Запуски
В вашем браузере
Стоимость
Бесплатно · без регистрации
Доступность
Готово к использованию
JSON в ZodЛокальная обработка

Полностью работает в браузере

TypeScript

import { z } from "zod";

export const AddressSchema = z.object({
  city: z.string(),
  zip_code: z.string(),
});
export type Address = z.infer<typeof AddressSchema>;

export const UserSchema = z.object({
  id: z.number().int(),
  user_name: z.string(),
  avatar_url: z.string(),
  score: z.number(),
  tags: z.array(z.string()),
  address: AddressSchema,
  manager_id: z.number().int().nullable(),
  nickname: z.string().optional(),
});
export type User = z.infer<typeof UserSchema>;

export const UserListSchema = z.array(UserSchema);

Для каждого объекта создаются схема и выведенный тип. Ключи, отсутствующие в некоторых объектах, получают .optional(), ключи, значения которых иногда равны null, — .nullable(), а целые числа — .int(); ослабьте любое правило, которое ваш API не гарантирует.

Использование схемы

Вызовите Schema.parse(data), чтобы проверить данные и получить ошибку при неверных значениях, или Schema.safeParse(data), чтобы получить результат, который можно проверить без try и catch. Экспортируемый тип из z.infer остаётся согласованным со схемой при её редактировании.

Если вам нужны только типы во время компиляции, JSON в TypeScript создаёт обычные интерфейсы; для проверки по существующей JSON Schema используйте валидатор JSON Schema.

Уточнение созданных правил

Пример показывает только содержащиеся в нём данные, поэтому воспринимайте схему как отправную точку: добавляйте .email(), .url() или .datetime() для строк, где это необходимо, z.enum([...]) для полей с фиксированным набором значений, а также .min() или .max(), если у данных есть ограничения.

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

  1. Вставьте пример JSON, желательно массив с несколькими типичными записями.
  2. Задайте имя типа верхнего уровня.
  3. Скопируйте схемы и используйте их для проверки данных во время выполнения.

Конфиденциальность и ограничения

JSON преобразуется в вашем браузере и никогда не загружается на сервер.

Похожие инструменты

Часто задаваемые вопросы

Зачем использовать Zod вместо интерфейса TypeScript?

Интерфейс исчезает при компиляции кода, поэтому не может проверять данные во время выполнения. Схема Zod проверяет данные и предоставляет тот же тип с помощью z.infer.

Действительно ли для целых чисел нужно использовать .int()?

Только если ваш API гарантирует целые числа. Если цена или оценка могут содержать дробную часть, удалите .int(), даже если в примере есть только целые числа.

Обрабатывает ли инструмент строки, например даты или адреса электронной почты?

Для них задаётся тип z.string(); добавьте такие уточнения, как .email(), .url() или проверку даты, если это требуется для ваших данных.

Бесплатный инструмент · запусков: в вашем браузере · аккаунт не нужен