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-03
Go語言并發(fā)處理效率響應(yīng)能力及在現(xiàn)代軟件開發(fā)中的重要性
這篇文章主要為大家介紹了Go語言并發(fā)處理的效率及響應(yīng)能力以及在現(xiàn)代軟件開發(fā)中的重要性實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-12-12
Go語言字符串及strings和strconv包使用實(shí)例
字符串是工作中最常用的,值得我們專門的練習(xí)一下,下面這篇文章主要給大家介紹了關(guān)于Go語言字符串及strings和strconv包使用的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-06-06

