English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

دروس أساسية لـ Golang

تعليمات التحكم في Golang

وظائف Golang & طرق

كائنات Golang

قطع Golang & Arrays

كلمات Golang (String)

مراجع Golang

واجهات Golang

تعاملات Golang

استثناءات Golang (Error)

متنوعة أخرى لـ Golang

JSON بلغة Go

يملك Go دعمًا مدمجًا للترميز والفكاك بـ JSON. كما يدعم أنواع البيانات المخصصة.

يستخدم Marshal وظيفة لتحويل أنواع البيانات في go إلى نموذج JSON.

نحو Marshal وظيفة

"func Marshal(v interface{}) ([]byte, error)"

يعود Marshal بـ JSON الترميز لـ v.

تحويل القيم الحقيقية إلى قيم JSON الحقيقية. يتم تحويل الأعداد الصحيحة والكبيرة والصغيرة إلى أرقام JSON. يجب أن يكون نوع مفتاح Map هو 字رة أو نوع صحيح أو يعتمد على encoding.TextMarshaler.

يتم解码 JSON باستخدام وظيفة Unmarshal.

نحو Unmarshal وظيفة

"func Unmarshal(data []byte, v interface{}) error"

ي解码 Unmarshal القيمة الم编码ة بـ JSON ويخزن النتيجة في القيمة التي يشير إليها v. إذا كان v nil أو ليس مرجعًا، فإن Unmarshal يعود بـ InvalidUnmarshalError.

يمكننا أيضًا تخصيص الحقول المخزنة في علامات التبويب "json" في الحقول في "struct". يمكننا استخدام اسم هذا الحقل، ثم قائمة الخيارات المفصولة بالكومياس.

Field int 'json:"myName"' // يعرض في JSON كمفتاح "myName"
Field int 'json:"myName,omitempty?'//إذا كان قيمة هذا الحقل فارغة، يتم استبعاد هذا الحقل من العنصر
Field int 'json:"-"' // الحقل يتم تجاهله بهذا المجلد.

مثال JSON Go 1

package main
import "encoding/json"
import "fmt"
func main() {
	bolType, _ := json.Marshal(false) // قيمة الحقيقة أو الزائفة
	fmt.Println(string(bolType))
	intType, _ := json.Marshal(10) // قيمة العدد الصحيح
	fmt.Println(string(intType))
	fltType, _ := json.Marshal(3.14) // قيمة النقاط العشرية
	fmt.Println(string(fltType))
	strType, _ := json.Marshal("w3codebox") // قيمة النص
	fmt.Println(string(strType))
	slcA := []string{"sun", "moon", "star"} // قيمة الحزمة
	slcB, _ := json.Marshal(slcA)
	fmt.Println(string(slcB))
	mapA := map[string]int{"sun": 1, "moon": 2} // قيمة map
	mapB, _ := json.Marshal(mapA)
	fmt.Println(string(mapB))
}

الإخراج:

false
10
3.14
"w3codebox"
["sun","moon","star"]
{"moon":2,"sun":1}

مثال JSON Go 2 (نوع البيانات المحدد من قبل المستخدم)

package main
import (
	"encoding/json"
	"fmt"
	"os"
)
type Response1 struct {
	Position int
	Planet []string
}
type Response2 struct {
	Position int 'json:"position"'
	Planet []string 'json:"planet"'
}
func main() {
	res1A := &Response1{
		Position:   1,
		Planet: []string{"mercury", "venus", "earth"}}
	res1B, _ := json.Marshal(res1A)
	fmt.Println(string(res1B))
	res2D := &Response2{
		Position:   1,
		Planet: []string{"mercury", "venus", "earth"}}
	res2B, _ := json.Marshal(res2D)
	fmt.Println(string(res2B))
	byt := []byte('{"pi":6.13,"place":["New York","New Delhi"]}`)
	var dat map[string]interface{}
	if err := json.Unmarshal(byt, &dat); err != nil {
		panic(err)
	}
	fmt.Println(dat)
	num := dat["pi"].(float64)
	fmt.Println(num)
	strs := dat["place"].([]interface{})
	str1 := strs[0].(string)
	fmt.Println(str1)
	str := `{"Position": 1, "Planet": ["mercury", "venus"]}`
	res := Response2{}
	json.Unmarshal([]byte(str), &res)
	fmt.Println(res)
	fmt.Println(res.Planet[1])
	enc := json.NewEncoder(os.Stdout)
	d := map[string]string{"1":"mercury" , "2": "venus"}
	enc.Encode(d)
}

الإخراج:

{"Position":1,"Planet":["mercury","venus","earth"]}
{"position":1,"planet":["mercury","venus","earth"]}
خريطة[pi:6.13 مكان:[نيويورك نيودلهي]]
6.13
نيويورك
{1 [العدن الزهرة]}
العدن
{"1":"mercury","2":"venus"}