在golang中,我們可以方便地操作json數(shù)據(jù)格式。Golang內(nèi)置了encoding/json包,可以將json字符串轉(zhuǎn)換為結(jié)構(gòu)化的數(shù)據(jù),也可以將golang中的結(jié)構(gòu)體數(shù)據(jù)轉(zhuǎn)換為json字符串。下面我們將詳細(xì)介紹golang中的json操作。
1. 解析json字符串
package main import ( "encoding/json" "fmt" ) type Person struct { Name string `json:"name"` Age int `json:"age"` } func main() { jsonStr := `{"name": "Tom", "age": 18}` var person Person err := json.Unmarshal([]byte(jsonStr), &person) if err != nil { fmt.Println(err) } fmt.Println(person) }
2. 生成json字符串
package main import ( "encoding/json" "fmt" ) type Person struct { Name string `json:"name"` Age int `json:"age"` } func main() { person := Person{ Name: "Tom", Age: 18, } jsonStr, err := json.Marshal(person) if err != nil { fmt.Println(err) } fmt.Println(string(jsonStr)) }
3. 修改json數(shù)據(jù)
package main import ( "encoding/json" "fmt" ) type Person struct { Name string `json:"name"` Age int `json:"age"` } func main() { jsonStr := `{"name": "Tom", "age": 18}` var person Person err := json.Unmarshal([]byte(jsonStr), &person) if err != nil { fmt.Println(err) } person.Name = "Jerry" person.Age = 20 newJsonStr, err := json.Marshal(person) if err != nil { fmt.Println(err) } fmt.Println(string(newJsonStr)) }
4. 處理復(fù)雜的json數(shù)據(jù)
package main import ( "encoding/json" "fmt" ) type Address struct { Province string `json:"province"` City string `json:"city"` } type Person struct { Name string `json:"name"` Age int `json:"age"` Address Address `json:"address"` } func main() { jsonStr := `{"name": "Tom", "age": 18, "address": {"province": "Guangdong", "city": "Shenzhen"}}` var person Person err := json.Unmarshal([]byte(jsonStr), &person) if err != nil { fmt.Println(err) } fmt.Println(person.Name) fmt.Println(person.Address.Province) fmt.Println(person.Address.City) }
以上是golang中json操作的簡要介紹,希望對您有幫助。
上一篇vue blog博客模板
下一篇vue blob 圖片