Golang語言是一種強類型、并發安全的編程語言,同時它支持解析JSON數據格式。Go語言的標準庫中已經包含了解析JSON的包,稱為encoding/json包。下面我們將詳細介紹如何使用Go語言解析JSON數據。
package main import ( "encoding/json" "fmt" "log" ) type person struct { Name string `json:"name"` Age int `json:"age"` } func main() { jsonStr := `{ "name": "張三", "age": 20 }` var p person err := json.Unmarshal([]byte(jsonStr), &p) if err != nil { log.Fatal(err) } fmt.Println(p.Name) // output: 張三 fmt.Println(p.Age) // output: 20 }
在上面的代碼中,我們定義了一個person對象,并給它添加了json標簽。這些標簽指定了JSON數據和person對象屬性之間的對應關系。接下來我們使用json.Unmarshal函數將JSON數據解析為person對象。
除了上面的例子,Go語言的encoding/json包還提供了另外兩個非常有用的函數:Marshal和NewDecoder。
package main import ( "encoding/json" "fmt" "log" "strings" ) type person struct { Name string `json:"name"` Age int `json:"age"` } func main() { p := person{ Name: "張三", Age: 20, } // 將person對象編碼為JSON格式數據 jsonBytes, err := json.Marshal(p) if err != nil { log.Fatal(err) } fmt.Println(strings.TrimSpace(string(jsonBytes))) // output: {"name":"張三","age":20} // 解碼JSON格式數據到person對象 newP := person{} d := json.NewDecoder(strings.NewReader(string(jsonBytes))) if err := d.Decode(&newP); err != nil { log.Fatal(err) } fmt.Println(newP.Name) // output: 張三 fmt.Println(newP.Age) // output: 20 }
在上面的例子中,我們首先將person對象編碼為JSON格式數據,然后使用json.NewDecoder函數將JSON格式數據解碼回person對象。這種方法避免了使用Unmarshal函數時需要先將JSON數據讀入到內存中的問題。
下一篇vue form排版