1. 程式人生 > 實用技巧 >golang 之進階篇 json解析到結構體

golang 之進階篇 json解析到結構體

1、json解析到結構體

示例:

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

執行結果:

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

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

package main

import(
"encoding/json" "fmt" ) typeITstruct{ Company string `json:"company"` Subjects []string `json:"subjects"`//二次編碼 IsOk bool `json:"isok"` Price float64 `json:"price"` } funcmain() { jsonBuf := ` { "company":"itcast", "subjects": [ "Go", "C++", "Python", "Test"
], "isok": true, "price": 666.666 }` vartmp IT//定義一個結構體變數 err := json.Unmarshal([]byte(jsonBuf), &tmp)//第二個引數要地址傳遞 iferr != nil { fmt.Println("err = ", err) return } typeIT2struct{ Subjects []string `json:"subjects"`//二次編碼 } vartmp2 IT2 err = json.Unmarshal([]byte(jsonBuf), &tmp2)//第二個引數要地址傳遞 iferr != nil { fmt.Println("err = ", err) return } fmt.Printf("tmp2 = %+v\n", tmp2) }

  

執行結果:

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