Go語言中的struct是一種非常重要的數據類型,可以用來組合不同類型的數據并定義自己的類型。同時,JSON也是一種非常常見的數據格式,在前后端交互和數據傳輸中經常用到。在Go語言中,struct和JSON之間的轉換非常方便,可以通過簡單的標記實現兩者之間的互相轉換。
在Go語言中,我們可以為struct定義一個tag,tag可以用來描述struct中的字段,也可以用來告訴json庫如何將一個struct轉換為JSON字符串。通過在字段名后面加上一個tag,我們就可以為這個字段指定一個名稱,并定義一些其他的元數據,比如是否可為空、是否忽略等。例如:
type User struct { Name string `json:"name,omitempty"` Password string `json:"password,omitempty"` }
在上面的代碼中,我們定義了一個User結構體,并為其兩個字段加上了tag。通過json:"name,omitempty"這樣的標記,我們指定了Name字段在轉換為JSON字符串時應該叫做"name",并且如果Name為空的話應該忽略掉。同樣的,我們為Password字段指定了密碼字段的名稱,并且也指定了當其為空時應該被忽略。
有了上述內容后,我們就可以通過json包中提供的Marshal和Unmarshal函數,非常方便地將一個Go中的struct轉換為JSON格式或者JSON格式轉換為Go中的struct。例如:
type User struct { Name string `json:"name,omitempty"` Password string `json:"password,omitempty"` } func main() { u := User{Name: "Tom", Password: "123456"} //將struct轉換為JSON字符串 jsonStr, _ := json.Marshal(u) fmt.Println(string(jsonStr)) //輸出:{"name":"Tom","password":"123456"} //將JSON字符串轉換為struct var u2 User json.Unmarshal([]byte(`{"name":"Jerry","password":"654321"}`), &u2) fmt.Println(u2) //輸出:{Jerry 654321} }
在上述代碼中,我們分別使用了Marshal和Unmarshal函數,將一個Go中的struct轉換為JSON格式或者JSON格式轉換為Go中的struct,并成功地進行了輸出。
上一篇vue實踐揭秘pdf
下一篇mysql刷新flush