حزمة 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)
💡 الحقول المُصدَّرة (بحرف كبير) فقط تُحوَّل — الخاصّة تُتجاهل.
🎯 التالي: بناء خادم ويب.