Go語言提供了豐富的json編碼和解碼功能,可以輕松地將數(shù)據(jù)轉(zhuǎn)換成json格式的字符串,或者將json字符串反編碼為相應(yīng)的Go數(shù)據(jù)結(jié)構(gòu)。
type Person struct { Name string `json:"name"` Age int `json:"age"` } func main() { person := Person{ Name: "張三", Age: 18, } // 編碼為json字符串 jsonBytes, err := json.Marshal(person) if err != nil { fmt.Println("json.Marshal failed:", err) return } fmt.Println(string(jsonBytes)) // 解碼json字符串 var newPerson Person err = json.Unmarshal(jsonBytes, &newPerson) if err != nil { fmt.Println("json.Unmarshal failed:", err) return } fmt.Printf("name: %s, age: %d\n", newPerson.Name, newPerson.Age) }
在結(jié)構(gòu)體定義中,使用`json:"屬性名"`的方式來指定json的字段名。在編碼時,通過json.Marshal函數(shù)將數(shù)據(jù)轉(zhuǎn)換成json格式的字符串;在解碼時,使用json.Unmarshal函數(shù)將json字符串轉(zhuǎn)換為Go數(shù)據(jù)結(jié)構(gòu)。
除了結(jié)構(gòu)體之外,Go語言還提供了map、slice等數(shù)據(jù)結(jié)構(gòu)的json編解碼功能。json.MarshalIndent函數(shù)可以方便地輸出格式化良好的json字符串,json.Decoder和json.Encoder提供了流式讀寫json數(shù)據(jù)的功能。