简单的解析例子:
首先还是从官方文档中的例子:
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
|
package main import ( "fmt" "encoding/json" ) type Animal struct { Name string Order string } func main() { var jsonBlob = [] byte (`[ { "Name" : "Platypus" , "Order" : "Monotremata" }, { "Name" : "Quoll" , "Order" : "Dasyuromorphia" } ]`) var animals []Animal err := json.Unmarshal(jsonBlob, &animals) if err != nil { fmt. Println ( "error:" , err) } fmt.Printf( "%+v" , animals) } |
输出:
[{Name:Platypus Order:Monotremata} {Name:Quoll Order:Dasyuromorphia}]
简单进行修改,修改为:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
package main import ( "fmt" "encoding/json" ) type Animal struct { Name string Order string } func main() { var jsonBlob = [] byte (`{ "Name" : "Platypus" , "Order" : "Monotremata" }`) var animals Animal err := json.Unmarshal(jsonBlob, &animals) if err != nil { fmt. Println ( "error:" , err) } fmt.Printf( "%+v" , animals) } |
输出:
{Name:Platypus Order:Monotremata}
还是之前的例子:
解析这样的一个json字符串:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
{ "first fruit" : { "describe" : "an apple" , "icon" : "appleIcon" , "name" : "apple" }, "second fruit" : { "describe" : "an orange" , "icon" : "orangeIcon" , "name" : "orange" }, "three fruit array" : [ "eat 0" , "eat 1" , "eat 2" , "eat 3" , "eat 4" ] } |
go代码:
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
package main import ( "fmt" "encoding/json" ) type Fruit struct { Describe string `json: "describe" ` Icon string `json: "icon" ` Name string `json: "name" ` } type FruitGroup struct { FirstFruit *Fruit `json: "first fruit" ` //指针,指向引用对象;如果不用指针,只是值复制 SecondFruit *Fruit `json: "second fruit" ` //指针,指向引用对象;如果不用指针,只是值复制 THreeFruitArray [] string `json: "three fruit array" ` } func main() { var jsonBlob = [] byte (`{ "first fruit" : { "describe" : "an apple" , "icon" : "appleIcon" , "name" : "apple" }, "second fruit" : { "describe" : "an orange" , "icon" : "appleIcon" , "name" : "orange" }, "three fruit array" : [ "eat 0" , "eat 1" , "eat 2" , "eat 3" ]}`) var fruitGroup FruitGroup err := json.Unmarshal(jsonBlob, &fruitGroup) if err != nil { fmt. Println ( "error:" , err) } fmt.Printf( "%+v\n" , fruitGroup) fmt.Printf( "%+v\n" , fruitGroup.FirstFruit) fmt.Printf( "%+v\n" , fruitGroup.SecondFruit) } |
运行结果:
{FirstFruit:0xc00006c5a0 SecondFruit:0xc00006c5d0 THreeFruitArray:[eat 0 eat 1 eat 2 eat 3]}
&{Describe:an apple Icon:appleIcon Name:apple}
&{Describe:an orange Icon:appleIcon Name:orange}
到此这篇关于Go语言利用Unmarshal解析json字符串的实现的文章就介绍到这了,更多相关Go Unmarshal解析json字符串内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!
原文链接:https://blog.csdn.net/hp_cpp/article/details/101058472