色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

go json編碼結(jié)構(gòu)體

林子帆1年前8瀏覽0評論

JSON是一種輕量級的數(shù)據(jù)交換格式,被廣泛應(yīng)用于前后端數(shù)據(jù)傳輸和存儲。在Go語言中,可以使用內(nèi)置的"encoding/json"包將Go語言中的數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換為JSON格式的數(shù)據(jù)。

JSON格式的數(shù)據(jù)由"鍵-值"對組成,用大括號表示一個對象,用中括號表示一個數(shù)組。對于Go語言中的結(jié)構(gòu)體,我們可以通過給結(jié)構(gòu)體的字段添加標(biāo)簽來指定JSON中的鍵名。

type Person struct {
Name string `json:"name"`
Age  int    `json:"age"`
}
func main() {
p := Person{
Name: "張三",
Age:  20,
}
b, err := json.Marshal(p)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(b)) // {"name":"張三","age":20}
}

在上面的代碼中,我們創(chuàng)建了一個Person結(jié)構(gòu)體,指定其中的Name和Age字段分別對應(yīng)JSON中的"name"和"age"鍵名。然后調(diào)用json.Marshal函數(shù)將結(jié)構(gòu)體轉(zhuǎn)換為JSON格式的byte數(shù)組,并通過string函數(shù)將其轉(zhuǎn)換為字符串輸出。

另外,JSON有一個特殊的null值,對應(yīng)Go語言中的nil值。我們可以通過給結(jié)構(gòu)體字段添加omitempty標(biāo)簽來指定當(dāng)字段為nil時不輸出到JSON中。

type Person struct {
Name string `json:"name,omitempty"`
Age  int    `json:"age"`
}
func main() {
p1 := Person{
Name: "張三",
Age:  20,
}
p2 := Person{
Age: 30,
}
b1, err1 := json.Marshal(p1)
if err1 != nil {
fmt.Println(err1)
return
}
b2, err2 := json.Marshal(p2)
if err2 != nil {
fmt.Println(err2)
return
}
fmt.Println(string(b1)) // {"name":"張三","age":20}
fmt.Println(string(b2)) // {"age":30}
}

在上面的代碼中,我們創(chuàng)建了兩個Person結(jié)構(gòu)體,其中p2的Name字段為nil。在轉(zhuǎn)換為JSON格式時,p2的Name字段不會輸出到JSON中。

總之,Go語言中使用"encoding/json"包可以很方便地將數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換為JSON格式的數(shù)據(jù),并通過標(biāo)簽和選項(xiàng)指定JSON中的鍵名和字段值。在實(shí)際開發(fā)中,我們應(yīng)該根據(jù)接口文檔的要求規(guī)范地編寫數(shù)據(jù)結(jié)構(gòu)和標(biāo)簽,以確保數(shù)據(jù)的正確傳輸和存儲。