golang提供了方便的json解析庫,可以把json數據轉化成golang的結構體類型。golang的json解析庫使用reflect機制,處理速度較快。
在golang中,json解析主要使用兩個函數Unmarshal和Marshal。Unmarshal函數將json數據解析成golang的結構體類型,Marshal函數把一個結構體類型轉成json數據。
下面是一個簡單的golang json解析示例:
import "encoding/json" import "fmt" import "log" type Person struct { Name string Age int } func main() { data := `{"Name": "Tom", "Age": 20}` var p Person err := json.Unmarshal([]byte(data), &p) if err != nil { log.Fatal(err) } fmt.Println(p.Name, p.Age) }
使用json.Unmarshal函數把json數據解析成Person結構體類型。注意,解析json數據時,需要把json數據轉化為byte數組類型。
如果json數據中的屬性名和結構體中的屬性名不一致,可以使用tag標識來解析屬性名。如:
type Person struct { Name string `json:"name"` Age int `json:"age"` } data := `{"name": "Tom", "age": 20}` var p Person err := json.Unmarshal([]byte(data), &p) if err != nil { log.Fatal(err) } fmt.Println(p.Name, p.Age)
Person結構體使用了tag標識,指定屬性名對應的json數據中的鍵名。這樣,在解析數據時,就可以正確解析出Person結構體的屬性。
需要注意的是,在使用Unmarshal解析json數據時,目標類型必須是可導出類型(即首字母大寫),否則無法正確解析。
上一篇python 按月計算
下一篇c json傳照片