go語言之進階篇json解析到結構體,Unmarshal使用


1、json解析到結構體

示例:

package  main
 
import  (
     "encoding/json"
     "fmt"
)
 
type  IT struct  {
     Company  string   `json: "company" `
     Subjects []string `json: "subjects" ` //二次編碼
     IsOk     bool     `json: "isok" `
     Price    float64  `json: "price" `
}
 
func  main() {
 
     jsonBuf := `
     {
     "company" : "itcast" ,
     "subjects" : [
         "Go" ,
         "C++" ,
         "Python" ,
         "Test"
     ],
     "isok" : true,
     "price" : 666.666
}`
 
     var  tmp IT                                   //定義一個結構體變量
     err := json.Unmarshal([]byte(jsonBuf), &tmp) //第二個參數要地址傳遞
     if  err != nil {
         fmt.Println( "err = " , err)
         return
     }
     //fmt.Println("tmp = ", tmp)
     fmt.Printf( "tmp = %+v\n" , tmp)
}

執行結果:

1
tmp = {Company:itcast Subjects:[Go C++ Python Test] IsOk:true Price:666.666}

  

示例2: 定義結構體,解析你想生成的字段

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
49
package  main
 
import  (
     "encoding/json"
     "fmt"
)
 
type  IT  struct  {
     Company  string   `json: "company" `
     Subjects []string `json: "subjects" //二次編碼
     IsOk     bool     `json: "isok" `
     Price    float64  `json: "price" `
}
 
func  main() {
 
     jsonBuf := `
     {
     "company" "itcast" ,
     "subjects" : [
         "Go" ,
         "C++" ,
         "Python" ,
         "Test"
     ],
     "isok" : true,
     "price" : 666.666
}`
 
     var  tmp IT                                    //定義一個結構體變量
     err := json.Unmarshal([]byte(jsonBuf), &tmp)  //第二個參數要地址傳遞
     if  err != nil {
         fmt.Println( "err = " , err)
         return
     }
 
     type  IT2  struct  {
         Subjects []string `json: "subjects" //二次編碼
     }
 
     var  tmp2 IT2
     err = json.Unmarshal([]byte(jsonBuf), &tmp2)  //第二個參數要地址傳遞
     if  err != nil {
         fmt.Println( "err = " , err)
         return
     }
     fmt.Printf( "tmp2 = %+v\n" , tmp2)
 
}

執行結果:

1
tmp2 = {Subjects:[Go C++ Python Test]}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM