1、通過結構體生成json
示例:
package main import ( "encoding/json" "fmt" ) //成員變量名首字母必須大寫 type IT struct { Company string Subjects []string IsOk bool Price float64 } func main() { //定義一個結構體變量,同時初始化 s := IT{"itcast", []string{"Go", "C++", "Python", "Test"}, true, 666.666} //編碼,根據內容生成json文本 buf, err := json.Marshal(s) if err != nil { fmt.Println("err = ", err) return } fmt.Println("buf = ", string(buf)) }
執行結果:
buf = {"Company":"itcast","Subjects":["Go","C++","Python","Test"],"IsOk":true,"Price":666.666}
2、根據結構體生成json
package main import ( "encoding/json" "fmt" ) //成員變量名首字母必須大寫 type IT struct { Company string Subjects []string IsOk bool Price float64 } func main() { //定義一個結構體變量,同時初始化 s := IT{"itcast", []string{"Go", "C++", "Python", "Test"}, true, 666.666} //編碼,根據內容生成json文本 buf, err := json.MarshalIndent(s, "", " ") //格式化編碼 if err != nil { fmt.Println("err = ", err) return } fmt.Println("buf = ", string(buf)) }
執行結果:
buf = { "Company": "itcast", "Subjects": [ "Go", "C++", "Python", "Test" ], "IsOk": true, "Price": 666.666 }
3、struct_tag的使用 (通過二次編碼,可以把大寫變成小寫,還可以以字符串方式輸出)
示例:
package main import ( "encoding/json" "fmt" ) //成員變量名首字母必須大寫 type IT struct { //Company string `json:"-"` //此字段不會輸出到屏幕 //下面的寫法都是二次編碼,可以把大寫變成小寫 Company string `json:"company"` Subjects []string `json:"subjects"` IsOk bool `json:"isok"` //轉成字符串再輸出編碼 //IsOk bool `json:"string"` Price float64 `json:"price"` } func main() { //定義一個結構體變量,同時初始化 s := IT{"itcast", []string{"Go", "C++", "Python", "Test"}, true, 666.666} //編碼,根據內容生成json文本 buf, err := json.MarshalIndent(s, "", " ") //格式化編碼 if err != nil { fmt.Println("err = ", err) return } fmt.Println("buf = ", string(buf)) }
執行結果:
buf = { "company": "itcast", "subjects": [ "Go", "C++", "Python", "Test" ], "isok": true, "price": 666.666 }