欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

go json marshal 空值

林雅南2年前7瀏覽0評論

Go語言的json.Marshal()函數是用于將結構體或者其他類型數據轉換為JSON格式的字符串。對于空值的處理在實際開發工作中是尤為重要的,因為很多時候我們需要告訴客戶端一個屬性是不存在的,而不僅僅是它的值為null或者0。

type Person struct {
Name    string  `json:"name"`
Age     int     `json:"age"`
Address *string `json:"address,omitempty"`
}
func main() {
p1 := Person{
Name: "張三",
Age:  20,
}
p2 := Person{
Name: "李四",
Age:  30,
}
jsonBytes1, _ := json.Marshal(p1)
fmt.Println(string(jsonBytes1)) // {"name":"張三","age":20}
jsonBytes2, _ := json.Marshal(p2)
fmt.Println(string(jsonBytes2)) // {"name":"李四","age":30,"address":null}
}

在上述代碼中,我們創建了一個名為Person的結構體,并且在地址上使用了指針。結構體包含一個名稱,一個年齡和一個地址。除此之外,我們還在結構體中利用json標簽來給這些屬性分別定義JSON鍵。在Main()函數中,我們創建了兩個Person類型的變量,并使用json.Marshal()函數將它們轉換為JSON字符串。在第一個例子中,我們沒有為Person結構體的Address屬性賦值,因此由于我們在結構體標簽中使用了omitempty選項,沒有生成JSON字符串中對應的字段。在第二個例子中,我們為結構體的Address屬性分配了一個空指針,這會導致在JSON字符串中生成一個null值。

尚需指出的是,由于Go語言不支持在結構體中使用null值,因此在分配空引用時,我們會將其分配為一個空指針。這很重要,因為一些語言,如JavaScript,可以解釋null值。如果我們在Go中使用Marshal()函數來處理null值,就需要確保我們使用JavaScript等其他語言處理JSON值的架構時能夠解釋null值。