На главную
Данные и форматы
JSON в схему Zod
Из образца ответа API получается схема валидации: целые числа, почта, ссылки и даты распознаются, а поле, которого нет в части элементов массива, помечается необязательным.
Схема Zod
import { z } from 'zod';
export const User = z.array(z.object({
id: z.number().int(),
email: z.string().email(),
site: z.string().url().optional(),
created: z.string().datetime(),
rating: z.number(),
active: z.boolean(),
profile: z.object({
city: z.string(),
age: z.number().int(),
}),
tags: z.array(z.string()),
}));
export type User = z.infer<typeof User>;
Схема снята с одного образца: она описывает то, что пришло, а не то, что документировано. Массив из нескольких элементов даёт заметно более честный результат, чем один объект.