تحويل JSON إلى TypeScript interface

تقرأ الأداة عينة JSON وتكتب لكل كائن interface باسم واضح، فلا تحتاج إلى كتابة شكل استجابة API يدويا.

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

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

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

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

طريقة الحساب

string للنصوص، وnumber لكل الأرقام، وboolean لقيم true وfalse، وT[] للقوائم، وكل كائن متداخل يصبح interface مستقلة. عند دمج عناصر المصفوفة يصبح المفتاح الغائب في بعضها اختياريا (?)، وتضيف null النوع | null، والمفتاح الذي لا يحمل إلا null يصبح unknown.

مثال

المدخلات: اسم النوع الرئيسي = Root. النتيجة: الكود الناتج: export interface Root { id: number; name: string; email: string; is_active: boolean; balance: number; tags: string[]; address: Address; orders: Order[]; } export interface Address { city: string; postal_code: string; } export interface Order { order_id: string; total: number; coupon: string | null; }، عدد الأنواع: 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 }
  ]
}
export interface Root {
  id: number;
  name: string;
  email: string;
  is_active: boolean;
  balance: number;
  tags: string[];
  address: Address;
  orders: Order[];
}

export interface Address {
  city: string;
  postal_code: string;
}

export interface Order {
  order_id: string;
  total: number;
  coupon: string | null;
}

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

  • الأنواع مستنتجة من العينة فقط، فالمفتاح الذي لا يظهر فيها لن يظهر في الناتج.
  • المفتاح الذي يحمل أنواعا مختلفة، مثل نص مرة ورقم مرة، يصبح unknown.

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

كيف تتعامل الأداة مع مصفوفة كائنات؟

تدمج كل عناصر المصفوفة في نوع واحد، والمفتاح الموجود في بعض العناصر فقط يصبح اختياريا بعلامة ?.

لماذا كتبت بعض المفاتيح بين علامتي تنصيص؟

المفتاح الذي فيه شرطة أو مسافة أو يبدأ برقم ليس معرفا صالحا في TypeScript، لذلك يكتب مثل "full-name".

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

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