تحويل JSON إلى Zod schema

تحقق من بيانات API وقت التشغيل واحصل على النوع نفسه في TypeScript من تعريف واحد.

جارٍ تحميل الأداة…

المعالجة والخصوصية: تُحسب النتيجة داخل متصفحك ولا تُرسل بياناتك إلى أي خادم.

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

  1. أدخل نص JSON واسم النوع الرئيسي.
  2. تظهر النتيجة فورًا وتتحدّث مع كل تعديل.
  3. انسخ النتيجة، أو انسخ رابطًا يحفظ القيم نفسها لمشاركتها.

طريقة الحساب

z.string() وz.number() وz.number().int() وz.boolean() وz.array() وz.unknown()، ومخطط مستقل لكل كائن متداخل يعرف قبل استخدامه. .nullable() للقيم null و.optional() للمفاتيح الغائبة في بعض العناصر، ثم يصدر النوع عبر z.infer.

مثال

المدخلات: اسم النوع الرئيسي = Root. النتيجة: الكود الناتج: import { z } from "zod"; const OrderSchema = z.object({ order_id: z.string(), total: z.number(), coupon: z.string().nullable(), }); const AddressSchema = z.object({ city: z.string(), postal_code: z.string(), }); export const RootSchema = z.object({ id: z.number().int(), name: z.string(), email: z.string(), is_active: z.boolean(), balance: z.number(), tags: z.array(z.string()), address: AddressSchema, orders: z.array(OrderSchema), }); export type Root = z.infer<typeof RootSchema>;، عدد الأنواع: 3، عدد الحقول: 13.

{
  "id": 1024,
  "name": "Sara Ahmed",
  "email": "sara@example.com",
  "is_active": true,
  "balance": 1520.75,
  "tags": ["vip", "riyadh"],
  "address": { "city": "Riyadh", "postal_code": "12211" },
  "orders": [
    { "order_id": "A-1", "total": 99.5, "coupon": "EID10" },
    { "order_id": "A-2", "total": 120, "coupon": null }
  ]
}
import { z } from "zod";

const OrderSchema = z.object({
  order_id: z.string(),
  total: z.number(),
  coupon: z.string().nullable(),
});

const AddressSchema = z.object({
  city: z.string(),
  postal_code: z.string(),
});

export const RootSchema = z.object({
  id: z.number().int(),
  name: z.string(),
  email: z.string(),
  is_active: z.boolean(),
  balance: z.number(),
  tags: z.array(z.string()),
  address: AddressSchema,
  orders: z.array(OrderSchema),
});

export type Root = z.infer<typeof RootSchema>;

الحدود والملاحظات

  • يستخدم الدوال الأساسية المشتركة بين Zod 3 وZod 4.
  • لا يضيف قيودا مثل .email() أو .min()، فأضفها حسب قواعد بياناتك.

أسئلة شائعة عن هذه الأداة

لماذا عرفت المخططات الفرعية أولا؟

المتغير في JavaScript يجب أن يعرف قبل استخدامه، لذلك يأتي مخطط الكائن المتداخل قبل المخطط الذي يستخدمه.

كيف أتحقق من البيانات بالمخطط؟

استخدم RootSchema.parse(data) ليرمي خطأ عند عدم التطابق، أو safeParse للحصول على نتيجة دون استثناء.

هل ترسل بياناتي إلى خادم؟

لا، التحويل يعمل داخل متصفحك ولا يغادر نص JSON جهازك.