欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

golang中操作json

方一強2年前9瀏覽0評論

在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。