0Pricing
Go Academy · درس

علامات 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 يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. ما علامات Struct؟
  2. علامات JSON
  3. مكتبات التحقّق
  4. تحليل العلامات المخصّصة
← العودة إلى Go Academy