انتقل إلى المحتوى

تحويل JSON إلى مخطط Zod

يُنشئ مخطط Zod من عينة JSON باستخدام مكتبة json-to-zod. تُطابَق كل قيمة مع z.string() أو z.number() أو z.boolean() أو z.null() أو z.object() متداخل؛ وتصبح المصفوفات الفارغة z.array(z.unknown()).

صياغة مدقق وقت التشغيل لاستجابة API لا تملك منها إلا مثالًا.

JSON

Zod Schema

متى تستخدمها

  • صياغة مدقق وقت التشغيل لاستجابة API لا تملك منها إلا مثالًا.
  • إضافة تحقق Zod إلى نموذج أو محمّل إعدادات دون كتابة المخطط يدويًا.

طريقة الاستخدام

  1. الصق عينة JSON ممثِّلة في المحرر الأيسر.
  2. افتح الإعدادات واضبط "Root Schema Name" إذا أردت اسمًا غير schema.
  3. انسخ الشيفرة ثم أحكِمها: أضف .optional() و.email() و.min() وقواعد مشابهة من مواصفاتك الفعلية.

عينة JSON

{
  "id": 42,
  "email": "ada@example.com",
  "roles": ["admin", "editor"],
  "profile": { "nickname": null, "verified": true },
  "tags": []
}

مخطط Zod (TypeScript)

import { z } from "zod"

export const schema = z.object({
  id: z.number(),
  email: z.string(),
  roles: z.array(z.string()),
  profile: z.object({ nickname: z.null(), verified: z.boolean() }),
  tags: z.array(z.unknown()),
})

التفاصيل والقيود

يجري الإنشاء في المتصفح؛ وتُحمَّل المكتبة عند الحاجة.

تُستنتج الأنواع من عينة واحدة. تصبح null هي z.null() فقط وليس .nullable()، ولا تُعلَّم المفاتيح المفقودة كاختيارية أبدًا.

المصفوفات ذات العناصر المختلفة الشكل تصبح z.union([...]) من كل شكل، وقد تحتاج إلى دمج يدوي.

لا تُكتشف الصيغ مثل البريد الإلكتروني أو التاريخ أو UUID؛ فكلها تصبح z.string().

FAQ

هل يمكنني تحويل مصفوفة JSON في المستوى الجذري؟

نعم. تصبح المصفوفة الجذرية z.array(...). إذا كانت لكائناتها مفاتيح مختلفة، يصبح كل كائن مختلف عضوًا في z.union.

كيف تُحدَّد أنواع قيم null؟

على أنها z.null()، التي لا تقبل إلا null. إذا كان الحقل قد يحمل سلسلة نصية أيضًا، فغيّره إلى z.string().nullable().

هل يضيف .optional() للحقول المفقودة؟

لا. كل مفتاح في العينة مطلوب. علِّم الحقول الاختيارية بنفسك.

المواصفات والمراجع