Go語言在處理Web開發(fā)的過程中,經(jīng)常需要返回JSON數(shù)據(jù)。JSON是Javascript Object Notation的縮寫,是一種輕量級(jí)的數(shù)據(jù)交換格式,被廣泛應(yīng)用于Web編程。為了方便處理和傳輸數(shù)據(jù),Go在標(biāo)準(zhǔn)庫中提供了json包,能夠很輕松地實(shí)現(xiàn)JSON數(shù)據(jù)的解析和生成。
func main() { person := map[string]string{"name": "Tom", "age": "30"} jsonBytes, err := json.Marshal(person) if err != nil { log.Fatal(err) } fmt.Println(string(jsonBytes)) // {"age":"30","name":"Tom"} }
在上面的例子中,我們定義了一個(gè)map類型的person,然后使用json.Marshal()將它轉(zhuǎn)換成JSON格式的字符串。如果轉(zhuǎn)換成功,在輸出JSON字符串之前我們需要把JSON字節(jié)數(shù)組轉(zhuǎn)換成字符串類型。
使用json.Unmarshal()解析JSON數(shù)據(jù)也非常簡單。下面的例子演示了如何解析JSON格式的字符串然后轉(zhuǎn)換成Go語言的map類型:
func main() { jsonString := `{"name": "Tom", "age": 30}` var person map[string]interface{} err := json.Unmarshal([]byte(jsonString), &person) if err != nil { log.Fatal(err) } fmt.Println(person["name"]) // Tom fmt.Println(person["age"]) // 30 }
在這個(gè)例子中,我們使用了json.Unmarshal()函數(shù)將JSON格式的字符串解析成一個(gè)空接口類型的map對(duì)象。解析的時(shí)候需要提供JSON字節(jié)數(shù)組的引用和一個(gè)目標(biāo)變量的地址。最后,我們通過map對(duì)象的鍵值來讀取JSON數(shù)據(jù)。