在 Go 編程語言中,可以使用 encoding/json 模塊來編碼和解碼 JSON 字符串。使用 json.Marhsal() 函數將 Go 對象編碼為 JSON 格式時,經常會遇到空數組的問題。
假設我們有一個結構體類型,包含了一個空數組:
type MyStruct struct { MyArray []int }
當使用 json.Marshal() 將該結構體類型編碼為 JSON 字符串時,其中的 MyArray 字段會被編碼為一個空數組。例如:
myObj := MyStruct{} jsonData, _ := json.Marshal(myObj) fmt.Println(string(jsonData)) // 輸出:{"MyArray":[]}
然而,有時我們可能希望空數組不被編碼為 "[]",而是編碼為 null。這可以使用 omitempty 標記來實現。例如:
type MyStruct struct { MyArray []int `json:"MyArray,omitempty"` }
此時,如果 MyArray 是一個空數組,它將被編碼為 null:
myObj := MyStruct{} jsonData, _ := json.Marshal(myObj) fmt.Println(string(jsonData)) // 輸出:{}
如果MyArray
字段不為空數組,那么它將按照正常方式被編碼為一個 JSON 數組。
總結來說,在將 Go 對象編碼為 JSON 格式時,可以通過添加 omitempty 標記來控制空數組的編碼方式。這將使得空數組被編碼為 null,而不是默認的 "[]"。