علامات JSON
تحكّم في التسلسل
علامات JSON درس مجاني في Go Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Go Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Go Academy 4 دروس في المجموع.
تتحكم وسوم JSON في التسلسل
تستخدم حزمة encoding/json وسوم json لتحديد أسماء المفاتيح والقواعد عند تحويل البنى من JSON وإليه.
أسماء الحقول الافتراضية
من دون وسوم، تطابق مفاتيح JSON أسماء الحقول المصدَّرة تمامًا، بما في ذلك حالة الأحرف.
package main
import (
"encoding/json"
"fmt"
)
type User struct {
Name string
Age int
}
func main() {
b, _ := json.Marshal(User{"Ann", 30})
fmt.Println(string(b))
}إعادة تسمية المفاتيح
يغير وسم json اسم المفتاح في الناتج. وهنا يصبح Name هو الاسم المكتوب بالأحرف الصغيرة.
package main
import (
"encoding/json"
"fmt"
)
type User struct {
Name string "json:\"name\""
Age int "json:\"age\""
}
func main() {
b, _ := json.Marshal(User{"Ann", 30})
fmt.Println(string(b))
}الخيار omitempty
أضف ,omitempty لتخطي الحقل في الناتج عندما يحتوي على قيمته الصفرية، مثل السلسلة الفارغة أو 0 أو nil وغير ذلك.
package main
import (
"encoding/json"
"fmt"
)
type User struct {
Name string "json:\"name\""
Email string "json:\"email,omitempty\""
}
func main() {
b, _ := json.Marshal(User{Name: "Ann"})
fmt.Println(string(b))
}تجاهل حقل
يخبر وسم قيمته - أداة الترميز بتخطي الحقل بالكامل، وهو مفيد للأسرار مثل كلمات المرور.
package main
import (
"encoding/json"
"fmt"
)
type User struct {
Name string "json:\"name\""
Password string "json:\"-\""
}
func main() {
b, _ := json.Marshal(User{"Ann", "secret"})
fmt.Println(string(b))
}إلغاء التسلسل باستخدام الوسوم
تعمل الوسوم في الاتجاهين. فعند فك ترميز JSON، يخبر الوسم أداة فك الترميز بأي مفتاح JSON تُملأ قيمة أي حقل.
package main
import (
"encoding/json"
"fmt"
)
type User struct {
Name string "json:\"name\""
}
func main() {
var u User
json.Unmarshal([]byte("{\"name\":\"Bob\"}"), &u)
fmt.Println(u.Name)
}المطابقة غير الحساسة لحالة الأحرف
عند فك التسلسل، تطابق Go مفاتيح JSON مع الوسوم من دون اعتبار لحالة الأحرف كخيار بديل. ومع ذلك، يظل تعريف الوسوم صراحةً هو الخيار الآمن والواضح.
الخيار string
يُرمّز الخيار ,string حقلًا رقميًا أو منطقيًا كسلسلة JSON. ويفيد ذلك مع الأنظمة التي تتوقع أن تكون الأرقام بين علامتي اقتباس.
package main
import (
"encoding/json"
"fmt"
)
type Item struct {
ID int "json:\"id,string\""
}
func main() {
b, _ := json.Marshal(Item{ID: 42})
fmt.Println(string(b))
}دمج الخيارات
يمكنك دمج اسم مع خيارات، مثل: json:"email,omitempty". يأتي الاسم أولًا، ثم الخيارات المفصولة بفواصل.
تُتخطى الحقول غير المصدَّرة
لا تُجرى عملية التسلسل إلا للحقول المصدَّرة، أي التي تبدأ بحرف كبير. ويظل الحقل ذو الاسم المكتوب بالأحرف الصغيرة غير مرئي لحزمة encoding/json مهما كان الوسم الذي يحمله.
package main
import (
"encoding/json"
"fmt"
)
type User struct {
Name string "json:\"name\""
age int
}
func main() {
b, _ := json.Marshal(User{Name: "Ann", age: 30})
fmt.Println(string(b))
}ناتج منسق
تنشئ json.MarshalIndent تنسيقًا لمسند JSON باستخدام المسافات البادئة، وهو مناسب للسجلات سهلة القراءة مع الاستمرار في احترام الوسوم.
package main
import (
"encoding/json"
"fmt"
)
type User struct {
Name string "json:\"name\""
}
func main() {
b, _ := json.MarshalIndent(User{"Ann"}, "", " ")
fmt.Println(string(b))
}تحقق سريع
ما الذي يفعله الخيار ,omitempty في وسم json؟
مراجعة
تتحكم وسوم JSON في التسلسل:
- إعادة تسمية المفاتيح باستخدام
json:"name" - يتخطى
,omitemptyالقيم الصفرية - يتجاهل
-الحقل، بينما يضع,stringالأعداد بين علامتي اقتباس - لا تُرمَّز إلا الحقول المصدَّرة
الأسئلة الشائعة
هل درس «علامات JSON» مجاني؟
نعم — نص درس «علامات JSON» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Go Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Go Academy 4 دروس في المجموع.
ماذا ستتعلم في «علامات JSON»؟
تحكّم في التسلسل تتمرن على Go Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Go Academy؟
لا تُشترط خبرة سابقة. Go Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «علامات JSON»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Go Academy هذا؟
نعم. كل درس في Go Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.