Go語(yǔ)言是目前最流行的一種編程語(yǔ)言,它支持處理JSON(JavaScript對(duì)象表示法)文件,使得在開(kāi)發(fā)Web應(yīng)用和RESTful API時(shí)取代XML和其他數(shù)據(jù)格式成為優(yōu)選。本文將介紹Go語(yǔ)言怎樣處理JSON文件。
// 示例代碼1 import ( "encoding/json" "fmt" ) type Person struct { Name string Age int Address Address } type Address struct { Province string City string } func main() { p := Person{Name: "張三", Age: 21, Address: Address{Province: "浙江省", City: "杭州市"}} b, err := json.Marshal(p) if err != nil { panic(err) } fmt.Println(string(b)) }
在示例代碼1中,包含一個(gè)Person結(jié)構(gòu)體和一個(gè)Address結(jié)構(gòu)體。首先,用`json.Marshal()`函數(shù)將Person結(jié)構(gòu)體轉(zhuǎn)換為JSON格式,然后使用`fmt.Println()`函數(shù)將轉(zhuǎn)換后的JSON格式輸出到控制臺(tái)。
// 示例代碼2 type Person struct { Name string `json:"name"` Age int `json:"age"` Address struct { Province string `json:"province"` City string `json:"city"` } `json:"address"` } func main() { var p Person jsonStr := `{"name":"張三","age":21,"address":{"province":"浙江省","city":"杭州市"}}` json.Unmarshal([]byte(jsonStr), &p) fmt.Println(p.Name, p.Age, p.Address.Province, p.Address.City) }
在示例代碼2中,首先定義一個(gè)Person結(jié)構(gòu)體。Person結(jié)構(gòu)體的各字段使用了`json`標(biāo)簽進(jìn)行了注釋,以便在編碼JSON和解碼JSON時(shí)使用。然后,使用`json.Unmarshal()`函數(shù)將JSON字符串轉(zhuǎn)換為Person結(jié)構(gòu)體,然后將解碼后的Person結(jié)構(gòu)體的各字段輸出到控制臺(tái)。
總體來(lái)說(shuō),Go語(yǔ)言對(duì)JSON的處理很簡(jiǎn)單,只要定義好結(jié)構(gòu)體,使用`json.Marshal()`函數(shù)將結(jié)構(gòu)體轉(zhuǎn)換為JSON字符串,使用`json.Unmarshal()`函數(shù)將JSON字符串轉(zhuǎn)換為結(jié)構(gòu)體即可。Go語(yǔ)言的JSON處理函數(shù)還支持縮進(jìn)、HTML逸碼,以及接收流式JSON等特性,具體使用時(shí)可詳細(xì)查看相關(guān)文檔。