go語言string轉(zhuǎn)結(jié)構(gòu)體的實(shí)現(xiàn)
在 Go 語言中,可以使用標(biāo)準(zhǔn)庫中的 encoding/json 包將 JSON 格式的字符串轉(zhuǎn)換為結(jié)構(gòu)體。
假設(shè)有以下 JSON 字符串:
{ "name": "雞哥", "age": 28, "gender": "男", "hobby": { "sing": "唱", "jump": "跳", "rap": "rap", "ball":"籃球" } }
可以定義一個(gè)對(duì)應(yīng)的結(jié)構(gòu)體類型:
type hobby struct { ? ? Sing ? ?string ?`json:"sing"` ? ? Jump ? ?string `json:"jump"` ? ? Rap ? ? string ?`json:"rap"` ? ? Hobby hobby ? ?`json:"hobby"` } type Person struct { ? ? Name string `json:"name"` ? ? Age string ?`json:"age"` ? ? Gender string `json:"gender` ? ? Hobby hobby `json:"hobby"` }
然后使用 json.Unmarshal() 函數(shù)將 JSON 字符串解析為該結(jié)構(gòu)體類型的實(shí)例:
package main import ( ? ? "encoding/json" ? ? "fmt" ) func main() { ? ? jsonStr := `{ ? ? "name": "雞哥", ? ? "age": 28, ? ? "gender": "男", ? ? "hobby": { ? ? ? ? "sing": "唱", ? ? ? ? "jump": "跳", ? ? ? ? "rap": "rap", ? ? ? ? "ball":"籃球" ? ? } }` ? ? var person Person ? ? if err := json.Unmarshal([]byte(jsonStr), &person); err != nil { ? ? ? ? fmt.Println("解析 JSON 失敗:", err) ? ? ? ? return ? ? } ? ? fmt.Printf("愛好:%s\n唱:%d\n跳:%s\n愛好:%v\n", person.Sing, person.Jump, person.Rap, person.Hobby) }
在這個(gè)例子中,我們將 JSON 字符串 jsonStr 解析為類型為 Person 的結(jié)構(gòu)體實(shí)例 person。&person 表示將 person 的地址傳遞給 json.Unmarshal() 函數(shù),讓它將解析的結(jié)果填充到 person 中。如果解析失敗,會(huì)返回一個(gè)非空的錯(cuò)誤對(duì)象。
到此這篇關(guān)于go語言string轉(zhuǎn)結(jié)構(gòu)體的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)go語言string轉(zhuǎn)結(jié)構(gòu)體內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
基于go實(shí)例網(wǎng)絡(luò)存儲(chǔ)協(xié)議詳解
這篇文章主要為大家介紹了基于go實(shí)例網(wǎng)絡(luò)存儲(chǔ)協(xié)議詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03Go語言并發(fā)處理效率響應(yīng)能力及在現(xiàn)代軟件開發(fā)中的重要性
這篇文章主要為大家介紹了Go語言并發(fā)處理的效率及響應(yīng)能力以及在現(xiàn)代軟件開發(fā)中的重要性實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-12-12Go語言字符串及strings和strconv包使用實(shí)例
字符串是工作中最常用的,值得我們專門的練習(xí)一下,下面這篇文章主要給大家介紹了關(guān)于Go語言字符串及strings和strconv包使用的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-06-06