Golang是一門快速、高效并且可靠的語言。其中,針對JSON解析和序列化,Golang以其簡單、有效的方式著稱。
Golang標準庫提供一個JSON包,可以用于序列化或解析JSON數據。JSON包提供了兩個主要類型,分別是Decoder和Encoder。其中,Decoder用于從輸入流中解析JSON數據,而Encoder則用于生成JSON輸出流。
/* 解析JSON */
// 定義一個數據結構Person
type Person struct {
Name string `json:"name"` // 使用反引號表示標簽
Age int `json:"age"`
Address string `json:"address"`
}
// JSON數據
str := `{
"name": "張三",
"age": 18,
"address": "重慶市南岸區"
}`
// 使用Unmarshal解析JSON
var p Person
err := json.Unmarshal([]byte(str), &p)
if err != nil {
log.Fatal(err)
}
fmt.Println(p.Name, p.Age, p.Address)
/* 生成JSON */
// 定義一個數據結構Student
type Student struct {
Name string `json:"name"`
Age int `json:"age"`
Class string `json:"class"`
}
// 創建一個Student對象
stu := Student{
Name: "小明",
Age: 15,
Class: "一年級",
}
// 使用Marshal生成JSON
data, err := json.Marshal(stu)
if err != nil {
log.Fatal(err)
}
fmt.Println(string(data))
在使用JSON包時,針對結構體中的字段,可以使用標簽(tag)來控制生成JSON時的名稱。
所有的標簽都是由反引號(`)包裹起來,其中json是標簽名。例如,使用`json:"age"`表示生成JSON時,將不再使用結構體中的字段名age,而是使用age標簽中的值。
總之,Golang JSON解析包是完美地解決了JSON序列化和反序列化的問題,通過上述示例,我們可以十分輕松地去掌握其使用方法。