本文主要介绍了go语言string转结构体的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
在 Go 语言中,可以使用标准库中的 encoding/json 包将 JSON 格式的字符串转换为结构体。
假设有以下 JSON 字符串:
1 2 3 4 5 6 7 8 9 10 11 | { "name" : "鸡哥" , "age" : 28, "gender" : "男" , "hobby" : { "sing" : "唱" , "jump" : "跳" , "rap" : "rap" , "ball" : "篮球" } } |
可以定义一个对应的结构体类型:
1 2 3 4 5 6 7 8 9 10 11 12 13 | 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() 函数将 JSON 字符串解析为该结构体类型的实例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | 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) } |
在这个例子中,我们将 JSON 字符串 jsonStr 解析为类型为 Person 的结构体实例 person。&person 表示将 person 的地址传递给 json.Unmarshal() 函数,让它将解析的结果填充到 person 中。如果解析失败,会返回一个非空的错误对象。
转自:微点阅读 https://www.weidianyuedu.com