在Go語言中,操作JSON數據非常方便,Go原生支持JSON的解析和生成。JSON(JavaScript Object Notation)是一種輕量級的數據交換格式,常用于前后端數據傳輸、數據存儲等
首先,我們需要了解Go語言中JSON的數據類型。JSON數據類型對應Go語言的數據類型如下:
JSON類型 Go類型 object map[string]interface{} array []interface{} string string number json.Number true bool false bool null nil
Go語言中對JSON的解析主要通過json.Unmarshal()實現,使用方法如下:
var jsonStr = []byte(`{"name":"John","age":30}`) var result map[string]interface{} err := json.Unmarshal(jsonStr, &result) if err != nil { panic(err) } fmt.Println(result["name"]) // 輸出: John
有時候JSON字符串中的鍵值對并不好用map[string]interface{}表示,我們需要一個更定制化的數據類型。結合例子,最好用一個struct表示:
type Person struct { Name string `json:"name"` Age int `json:"age"` } jsonStr := []byte(`{"name":"John","age":30}`) var result Person err := json.Unmarshal(jsonStr, &result) if err != nil { panic(err) } fmt.Println(result.Name) // 輸出: John
如果想要生成JSON數據,可以使用json.Marshal():
type Person struct { Name string `json:"name"` Age int `json:"age"` } person := Person{ Name: "John", Age: 30, } jsonData, err := json.Marshal(person) if err != nil { panic(err) } fmt.Println(string(jsonData)) // 輸出: {"name":"John","age":30}
如果JSON字符串中的鍵名是不確定的,需要動態解析,可以使用map[string]interface{} 。而如果本身就已經明確了JSON字符串的結構,可以先定義一個 struct。在原始數據中提取 struct 對應的屬性,即可將JSON解析成 struct。
下一篇python 拋出報錯