在 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 中。如果解析失败,会返回一个非空的错误对象。
到此这篇关于go语言string转结构体的实现的文章就介绍到这了,更多相关go语言string转结构体内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!
原文链接:https://blog.csdn.net/abc54250/article/details/129271101