Go語言中的json包提供了將數據在JSON(JavaScript Object Notation)和Go結構體(struct)之間進行編碼和解碼的功能。JSON是一種輕量級的數據交換格式,可以在多種編程語言之間進行數據傳遞。
package main import ( "encoding/json" "fmt" ) type User struct { Name string `json:"name"` Age int `json:"age"` Email string `json:"email"` } func main() { user := User{ Name: "Alice", Age: 30, Email: "alice@example.com", } // 將結構體編碼為JSON格式的字符串 jsonBytes, err := json.Marshal(user) if err != nil { fmt.Println(err) return } // 將JSON格式的字符串解碼為結構體 var user2 User if err := json.Unmarshal(jsonBytes, &user2); err != nil { fmt.Println(err) return } fmt.Println(string(jsonBytes)) // {"name":"Alice","age":30,"email":"alice@example.com"} fmt.Println(user2.Name) // Alice }
在上面的例子中,我們定義了一個名為User的結構體,并在結構體中添加了三個字段:Name、Age和Email。我們給每個字段都添加了一個名為json的tag,用于確定在編碼和解碼JSON字符串時使用的字段名稱。
接著,我們創建了一個名為user的結構體實例,并通過調用json.Marshal()函數將其編碼為JSON格式的字符串。Marshal()函數返回一個字節數組以及一個錯誤信息。如果有錯誤發生,則我們可以在日志中打印出來。
然后,我們定義了另一個名為user2的User結構體實例,并通過調用json.Unmarshal()函數將JSON字符串解碼為該結構體。Unmarshal()函數接收兩個參數:要解碼的JSON字節數組和一個指向要解碼到的結構體的指針。與Marshal()函數一樣,Unmarshal()函數也返回一個錯誤信息,我們可以在日志中打印出來。
最后,我們打印了編碼后的JSON字符串和解碼后的User結構體的Name字段值。