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

تحويل JSON إلى بنى Go

يُنشئ تعريفات struct في Go من JSON باستخدام منفذ لـ json-to-go، منسّقة بـ gofmt. تصبح المفاتيح حقولًا مُصدَّرة بصيغة CamelCase مع وسوم json:"..."؛ وتصبح الكائنات المتداخلة structs مجهولة مضمّنة، وتصبح null هي any.

كتابة struct لتمرير استجابة REST API من طرف ثالث إلى json.Unmarshal.

متى تستخدمها

  • كتابة struct لتمرير استجابة REST API من طرف ثالث إلى json.Unmarshal.
  • تهيئة أنواع الطلب والاستجابة لمعالج HTTP في Go من حمولات أمثلة.

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

  1. الصق كائن JSON أو مصفوفة في المحرر الأيسر.
  2. اقرأ الـ struct المُنشأ؛ اسم النوع الجذري دائمًا AutoGenerated.
  3. انسخه إلى الحزمة، وأعد تسمية النوع، واستخرج الـ structs المضمّنة إلى أنواع مسمّاة إذا كنت تعيد استخدامها.

JSON

{
  "id": 42,
  "user_name": "ada",
  "score": 9.5,
  "active": true,
  "deleted_at": null,
  "tags": ["go", "json"],
  "address": { "city": "Tokyo", "zip": "100-0001" }
}

Go struct

type AutoGenerated struct {
	ID        int      `json:"id"`
	UserName  string   `json:"user_name"`
	Score     float64  `json:"score"`
	Active    bool     `json:"active"`
	DeletedAt any      `json:"deleted_at"`
	Tags      []string `json:"tags"`
	Address   struct {
		City string `json:"city"`
		Zip  string `json:"zip"`
	} `json:"address"`
}

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

يجري الإنشاء في المتصفح. لا توجد إعدادات لاسم النوع أو للاختيار بين structs مضمّنة ومسمّاة أو للوسوم.

تُكتب الاختصارات بأحرف كبيرة (يصبح id هو ID) ويتحول snake_case إلى CamelCase، مع الاحتفاظ بالمفتاح الأصلي في وسم json.

تصبح الأعداد الصحيحة int (int64 للقيم الكبيرة)، والعشرية float64. تصبح null والمصفوفات الفارغة والمختلطة any أو []any.

عندما تختلف الكائنات في مصفوفة، تحصل المفاتيح المفقودة من بعضها على ,omitempty.

FAQ

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

نعم. ينتج type AutoGenerated []struct{...}، مع دمج حقول جميع الكائنات في المصفوفة.

لماذا نوع الحقل الذي قيمته null هو any؟

القيمة null لا تحمل معلومات عن النوع. استبدل any بمؤشر مثل *string أو *time.Time للإبقاء على دعم nil.

هل يُنشئ structs متداخلة مسمّاة؟

لا. الكائنات المتداخلة structs مجهولة مضمّنة. انقلها يدويًا إلى أنواع مسمّاة إذا كنت تحتاج للإشارة إليها.

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