UTILS.
‎100%‎ داخل المتصفح
🛡️

من JSON إلى مخطط Zod

الصق قيمة JSON نموذجية وأنشئ مخطط Zod إلى جانب نوع TypeScript مُستنتَج، بحيث يتحقق شكل واحد من الصحة أثناء التشغيل ومن الأنواع أثناء التصريف.

المخرج

حول هذه الأداة

تحوّل أداة من JSON إلى مخطط Zod عيّنة JSON ملصوقة إلى مخطط Zod جاهز للاستخدام ونوع TypeScript المطابق. Zod هي مكتبة التحقق المهيمنة في TypeScript، وكتابة أشجار z.object يدويًا لحمولات API الحقيقية بطيئة ومعرّضة للأخطاء. يحلّل هذا المحوّل JSON الخاص بك باستخدام JSON.parse، ويتنقّل عبر القيمة بشكل تكراري، ويصدر Zod اصطلاحيًا: تصبح السلاسل z.string()، والأعداد الصحيحة z.number().int()، والأرقام الأخرى z.number()، والقيم المنطقية z.boolean()، وnull تصبح z.null()، والكائنات المتداخلة مخططات z.object({...}) مسمّاة خاصة بها.

كل شيء يعمل محليًا في متصفحك — يُحلَّل JSON الخاص بك داخل الصفحة ولا يُرفَع أبدًا، لذا تبقى الحمولات الحساسة على جهازك. تستنتج المصفوفات نوع عنصرها عبر الدمج العميق لكل عنصر، لذا فإن مصفوفة كائنات ذات مفاتيح مختلفة قليلًا تُنتِج مخططًا واحدًا حيث تُعلَّم المفاتيح الغائبة من بعض العناصر بـ .optional(). تُميَّز سلاسل التاريخ والوقت بصيغة ISO-8601 وتُصدَر كـ z.string().datetime(). أما مفاتيح الكائنات غير الصالحة كمُعرّفات فتُقتبَس بأمان.

المُخرَج وحدة كاملة: ثابت مُصدَّر (export const) لكل مخطط كائن (تُعرَّف الأبناء قبل الآباء الذين يشيرون إليهم) متبوعًا بـ export type Root = z.infer<typeof Root>، فتحصل على أنواع أثناء التصريف مجانًا. استخدم مربع اسم الجذر لإعادة تسمية المخطط عالي المستوى، ومفتاح المفاتيح الغائبة لمعاملة المفاتيح الغائبة كـ .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()).
كيف تُعالَج الحقول الاختيارية أو القابلة لأن تكون null؟
عندما تفتقر عناصر مصفوفة أو أشقّاء مدموجون إلى مفتاح، يُعلَّم ذلك المفتاح بـ .optional(). القيمة التي تُرى كـ null تصبح z.null() أو تضيف .nullable(). يتيح لك مفتاح المفاتيح الغائبة إصدار .optional() (الافتراضي) أو .nullable() للمفاتيح الغائبة من بعض العيّنات.
هل يمنحني أيضًا نوع TypeScript؟
نعم. بعد المخطط يُصدِر export type Root = z.infer<typeof Root>، فيُشتَق النوع الساكن المُستنتَج من المخطط نفسه — مصدر واحد للحقيقة للتحقق أثناء التشغيل والأنواع أثناء التصريف معًا.
هل يُرفَع JSON الخاص بي إلى أي مكان؟
لا. يحدث التحليل وتوليد الشيفرة بالكامل في متصفحك باستخدام JSON.parse وجافاسكريبت عادية. لا يُرسَل شيء إلى خادم، لذا يمكنك بأمان لصق استجابات API خاصة.

المزيد من الأدوات