go語言是一種強(qiáng)類型靜態(tài)語言,通常應(yīng)用于網(wǎng)絡(luò)編程、云計算等領(lǐng)域。在進(jìn)行開發(fā)過程中,獲取json數(shù)組是一個很常見的操作。本文將介紹如何使用go語言的內(nèi)置包獲取json數(shù)組。
首先,需要引入go語言的內(nèi)置包“encoding/json”,該包提供了一些函數(shù)和結(jié)構(gòu)體,用于對JSON數(shù)據(jù)進(jìn)行編解碼。
// 引入encoding/json內(nèi)置包 import "encoding/json"
可以通過Unmarshal函數(shù)將json字符串轉(zhuǎn)換為go語言的數(shù)據(jù)結(jié)構(gòu)。具體來說,該函數(shù)需要兩個參數(shù):json字符串和將json解碼后的數(shù)據(jù)結(jié)構(gòu)的引用。
// 定義json字符串和解碼后的數(shù)據(jù)結(jié)構(gòu) var jsonStr = `{ "users": [ { "name": "Tom", "age": 18 }, { "name": "Jerry", "age": 20 } ] }` type user struct { Name string `json:"name"` Age int `json:"age"` } type users struct { Users []user `json:"users"` } // 使用Unmarshal函數(shù)解析json數(shù)組 var data users err := json.Unmarshal([]byte(jsonStr), &data) fmt.Println(data.Users[0].Name) // Tom fmt.Println(data.Users[1].Age) // 20
上面的代碼定義了一個json字符串和一個解碼后的數(shù)據(jù)結(jié)構(gòu)。通過調(diào)用Unmarshal函數(shù),將json解析為數(shù)據(jù)結(jié)構(gòu)之后即可使用。
如果需要將go語言中的數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換為json字符串,則可以使用json.Marshal函數(shù)。該函數(shù)需要一個參數(shù):go語言的數(shù)據(jù)結(jié)構(gòu),返回一個json字符串和一個錯誤。
// 定義切片,用于存放user數(shù)據(jù) var userList []user userList = append(userList, user{Name: "Tom", Age: 18}) userList = append(userList, user{Name: "Jerry", Age: 20}) // 使用Marshal函數(shù)將數(shù)據(jù)轉(zhuǎn)換為json字符串 jsonBytes, err := json.Marshal(userList) if err != nil { fmt.Println("json marshal error:", err) return } fmt.Println(string(jsonBytes)) // [{"name":"Tom","age":18},{"name":"Jerry","age":20}]
通過上述代碼,便可以通過內(nèi)置包“encoding/json”很輕松地獲取和轉(zhuǎn)換json數(shù)組了。