UTILS.
۱۰۰٪ در مرورگر
🛡️

تبدیل JSON به اسکیمای Zod

یک نمونه مقدار JSON را بچسبانید و یک اسکیمای Zod به‌همراه یک نوع استنتاج‌شده TypeScript بسازید، تا یک شکل هم در زمان اجرا و هم در زمان کامپایل اعتبارسنجی شود.

خروجی

درباره این ابزار

ابزار تبدیل JSON به اسکیمای Zod یک نمونه JSON چسبانده‌شده را به یک اسکیمای Zod آماده‌ استفاده و نوع TypeScript متناظر تبدیل می‌کند. Zod کتابخانه غالب اعتبارسنجی در TypeScript است و نوشتن دستی درخت‌های z.object برای payloadهای واقعی API کند و مستعد خطاست. این مبدل JSON شما را با JSON.parse تجزیه می‌کند، به‌صورت بازگشتی مقدار را پیمایش می‌کند و Zod اصولی تولید می‌کند: رشته‌ها به z.string()، اعداد صحیح به z.number().int()، سایر اعداد به z.number()، بولین‌ها به z.boolean()، null به z.null()، و اشیای تودرتو به اسکیماهای نام‌گذاری‌شده z.object({...}) خودشان تبدیل می‌شوند.

همه چیز به‌صورت محلی در مرورگر شما اجرا می‌شود — JSON شما درون صفحه تجزیه می‌شود و هرگز بارگذاری نمی‌شود، بنابراین payloadهای حساس روی دستگاه شما باقی می‌مانند. آرایه‌ها نوع عنصر خود را با ادغام عمیق همه عناصر استنتاج می‌کنند، پس آرایه‌ای از اشیا با کلیدهای اندکی متفاوت یک اسکیما تولید می‌کند که در آن کلیدهای غایب در برخی عناصر با .optional() علامت‌گذاری می‌شوند. رشته‌های تاریخ‌-زمان ISO-8601 شناسایی و به‌صورت z.string().datetime() تولید می‌شوند. کلیدهای شیئی که شناسه معتبر نیستند به‌طور ایمن در گیومه قرار می‌گیرند.

خروجی یک ماژول کامل است: یک const صادرشده برای هر اسکیمای شیء (فرزندان پیش از والدینی که به آن‌ها ارجاع می‌دهند تعریف می‌شوند) و به‌دنبال آن export type Root = z.infer<typeof Root>، پس شما به‌رایگان انواع زمان-کامپایل را دریافت می‌کنید. از جعبه root-name برای تغییر نام اسکیمای سطح-بالا و از کلید تغییر missing-key برای رفتار با کلیدهای غایب به‌عنوان .optional() (پیش‌فرض) یا .nullable() استفاده کنید. نتیجه را کپی کنید یا آن را به‌عنوان یک فایل .ts دانلود کنید.

پرسش‌های پرتکرار

انواع JSON چگونه به Zod نگاشت می‌شوند؟
string به z.string()، یک رشته تاریخ‌-زمان ISO به z.string().datetime()، اعداد صحیح به z.number().int()، سایر اعداد به z.number()، بولین‌ها به z.boolean()، null به z.null()، آرایه‌ها به z.array(...)، و اشیا به z.object({...}) نام‌گذاری‌شده. آرایه‌های خالی به z.array(z.unknown()) تبدیل می‌شوند.
فیلدهای اختیاری یا nullable چگونه مدیریت می‌شوند؟
وقتی عناصر یک آرایه یا خواهر-برادرهای ادغام‌شده فاقد یک کلید باشند، آن کلید با .optional() علامت‌گذاری می‌شود. مقداری که به‌صورت null دیده شود به z.null() تبدیل می‌شود یا .nullable() اضافه می‌کند. کلید تغییر missing-key به شما اجازه می‌دهد برای کلیدهای غایب در برخی نمونه‌ها .optional() (پیش‌فرض) یا .nullable() تولید کنید.
آیا یک نوع TypeScript هم به من می‌دهد؟
بله. پس از اسکیما، export type Root = z.infer<typeof Root> را تولید می‌کند، بنابراین نوع ایستای استنتاج‌شده از خود اسکیما مشتق می‌شود — یک منبع حقیقت واحد برای هم اعتبارسنجی زمان اجرا و هم انواع زمان کامپایل.
آیا JSON من جایی بارگذاری می‌شود؟
خیر. تجزیه و تولید کد کاملاً در مرورگر شما با JSON.parse و JavaScript ساده رخ می‌دهد. هیچ چیز به سروری ارسال نمی‌شود، پس می‌توانید با خیال راحت پاسخ‌های خصوصی API را بچسبانید.

ابزارهای بیشتر