🐹 شرح Go

التعامل مع JSON

حزمة encoding/json

import "encoding/json"

من بنية إلى JSON (Marshal)

type User struct {
  Name  string `json:"name"`
  Email string `json:"email"`
  Age   int    `json:"age"`
}

u := User{Name: "براء", Email: "b@mail.com", Age: 25}
data, _ := json.Marshal(u)
fmt.Println(string(data))
// {"name":"براء","email":"b@mail.com","age":25}

من JSON إلى بنية (Unmarshal)

jsonStr := `{"name":"سارة","age":22}`
var u User
json.Unmarshal([]byte(jsonStr), &u)
fmt.Println(u.Name)   // سارة

وسوم مفيدة

type Product struct {
  ID    int     `json:"id"`
  Name  string  `json:"name"`
  Price float64 `json:"price,omitempty"`  // يُحذف إن كان صفرًا
  Note  string  `json:"-"`                 // يُتجاهل دائمًا
}

تنسيق مقروء

data, _ := json.MarshalIndent(u, "", "  ")

JSON ديناميكي

عند عدم معرفة البنية:

var result map[string]any
json.Unmarshal(data, &result)

💡 الحقول المُصدَّرة (بحرف كبير) فقط تُحوَّل — الخاصّة تُتجاهل.

🎯 التالي: بناء خادم ويب.