Go JSON: فهم Struct Tags وMarshal عمليًا

2025-01-30

في Go، أي خطأ بسيط في الوسوم قد يسبب حقولًا مفقودة أو أسماء غير متوقعة. فهم قواعد التحويل يوفر وقتًا كبيرًا في تكامل API.

Struct tags

وسم json:"name,omitempty" يحدد الاسم والحذف عند القيمة الصفرية، والحقول غير المصدرة لا تُسلسل.

type User struct {
  ID   int    `json:"id"`
  Name string `json:"name,omitempty"`
}

Unmarshal

الأرقام داخل interface{} تصبح float64 افتراضيًا؛ استخدم json.Number أو structs لصرامة أعلى.

json.RawMessage

يسمح بتأجيل تحليل الجزء الداخلي، مفيد للحمولات متعددة الأشكال.

Marshal

يعتمد على reflection؛ في المسارات الحساسة جدًا يمكن تقييم مكتبات أسرع عند الحاجة.