→ جميع الأدوات Code Gen

مولّد هياكل Go من JSON

الصق JSON واحصل فورًا على هياكل Go جاهزة للإنتاج مع وسوم json صحيحة.

0 حرف

100% من جانب العميل

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

كيف يُعيَّن JSON إلى هياكل Go

تستخدم Go حقول هيكل مُصدَّرة مع وسوم json بين علامات اقتباس خلفية للتسلسل JSON. يُنشئ المولّد هيكلًا لكل كائن JSON مع حقل مُصدَّر واحد لكل مفتاح. تتبع أسماء الحقول اصطلاحات Go: تُصدَّر (PascalCase) ويُحفَظ مفتاح JSON الأصلي في الوسم json:"key". هكذا "firstName" في JSON يصبح FirstName string `json:"firstName"` في Go.

يتبع تعيين الأنواع قواعد encoding/json القياسية: سلاسل JSON تصبح string والأعداد الصحيحة int64 والكسور العشرية float64 والقيم المنطقية bool والمصفوفات شرائح ([]T). الكائنات المتداخلة تولّد أنواع هياكل مسمّاة إضافية. حقل قابل للقيمة الفارغة يُكتب كمؤشر (*T) حتى تمثّل القيمة الصفرية nil قيمة JSON null بشكل نظيف.

يمكن تبديل خيار وسم omitempty لكل حقل — `json:"key,omitempty"` يُسقط الحقل من مخرجات التحويل عندما يحمل قيمته الصفرية. هذا هو نمط Go القياسي لحقول API الاختيارية.

اصطلاحات التسمية ومحاور Go

لدى Go اصطلاحات أسلوب صارمة تفرضها أدوات gofmt وgolint. يطبّقها المولّد تلقائيًا: الاختصارات مثل "id" و"url" و"http" و"api" تُكتب بأحرف كبيرة ID وURL وHTTP وAPI وفق دليل الأسلوب الرسمي لـ Go. فمثلًا "userId" يصبح UserID و"apiUrl" يصبح APIURL.

تُشتقّ أسماء الهياكل من مفاتيح كائنات JSON بصيغة PascalCase. الهيكل الجذري يُسمّى "Root" افتراضيًا (قابل للتخصيص). عندما تظهر نفس بنية JSON عدة مرات تحت مفاتيح مختلفة يكتشف المولّد البنية المكررة ويُعيد استخدام نفس نوع الهيكل.

تتضمن المخرجات تصريح حزمة (افتراضيًا "main" للنماذج الأولية السريعة وقابل للتغيير) والاستيراد الضروري لـ "encoding/json" إذا تم توليد دوال مساعدة للتحويل جانب الهياكل.

سير عمل تطوير Go

يقضي مطوّرو Go الذين يعملون مع REST APIs وقتًا طويلًا في كتابة تعريفات هياكل يدويًا تعكس استجابات JSON. الصق استجابة API وولّد الهياكل واستخدم json.Unmarshal فورًا لتحليل الاستجابة إلى قيم Go مكتوبة بالأنواع.

عند بناء أدوات CLI مع cobra أو معالجات HTTP مع net/http تُعدّ هياكل الطلب والاستجابة المكتوبة بالأنواع ضرورية. يولّد المحوّل هياكل جاهزة للاستخدام مع json.NewDecoder(r.Body).Decode(&req) وjson.NewEncoder(w).Encode(resp).

مشاريع وحدة Go التي تستدعي APIs تابعة لجهات خارجية تحتفظ كثيرًا بملفات الهياكل المولّدة في حزمة internal/models. تندمج مخرجات المولّد بسلاسة في هذا النمط مع اسم حزمة قابل للتهيئة.

FAQ

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

لا. تتم جميع المعالجة بالكامل داخل متصفحك. لا يغادر JSON جهازك أبدًا.

كيف تُعالَج الكلمات المحجوزة في Go كأسماء حقول؟

الكلمات المحجوزة في Go مثل "type" و"func" و"var" و"map" و"chan" تحصل على شرطة سفلية كلاحقة (مثلًا Type_) ووسم json يحافظ على اسم المفتاح الأصلي.

هل تُعالَج المصفوفات ذات الأنواع المختلطة؟

عندما يحتوي مصفوف JSON على عناصر من أنواع مختلفة يصبح نوع عنصر الشريحة interface{} (أو any في Go 1.18+) مما يعكس الطبيعة الديناميكية للبيانات.

هل يمكنني التوليد مع وسوم omitempty افتراضيًا؟

نعم. يضيف مفتاح تبديل عالمي omitempty لكل وسم حقل وهو الخيار الأكثر شيوعًا لهياكل طلبات API حيث تكون الحقول كثيرًا اختيارية.

هل يتعامل المولّد مع JSON المتداخل بعمق؟

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

أدوات ذات صلة