- package main
- import (
- "encoding/json"
- "fmt"
- )
- /*
- {
- "company":"itcast"
- "":[
- "go"
- "c++"
- ],
- "isok":"ok"
- "price":"666"
- }
- */
- // 成员变量名首字母必须大写
- type IT struct {
- Company string `json:"company"` // 变为小写
- Subject []string
- Isok bool `json:",string"`
- Price float32
- }
- type IT2 struct {
- Company string `json:"company"`
- Subject []string `json:"subject"`
- Isok bool `json:"isok"`
- Price float32 `json:"price"`
- }
- func main() {
- s := IT{"itcast", []string{"go", "c++"}, true, 666}
- buf, err := JSON.Marshal(s)
- if err != nil {
- fmt.Println(err)
- }
- fmt.Println(string(buf))
- //{"Company":"itcast","Subject":["go","c++"],"Isok":true,"Price":666}
- // 格式化编码
- buf2, err := JSON.MarshalIndent(s, ""," ")
- if err != nil {
- fmt.Println(err)
- return
- }
- fmt.Println(string(buf2))
- // 通过 Map 生成 JSON
- m := make(map[string]interface{}, 4)
- m["compary"] = "itcast"
- m["subjects"] = []string{"go", "c++"}
- m["Isok"] = true
- m["price"] = 777
- result, err2 := JSON.Marshal(m)
- if err2 != nil {
- return
- }
- fmt.Println(string(result))
- //JSON 解析到 结构体
- jsonbuf := `{"Isok":true,"compary":"itcast","price":777,"subjects":["go","c++"]}`
- var tmp IT2
- err3 := JSON.Unmarshal([]byte(jsonbuf), &tmp)
- if err3 != nil {
- fmt.Println(err3)
- return
- }
- fmt.Println(tmp)
- //JSON 解析到 map
- m2 := make(map[string]interface{}, 4)
- err4 := JSON.Unmarshal([]byte(jsonbuf), &m2)
- if err4 != nil {
- fmt.Println(err4)
- }
- fmt.Println("map =", m2)
- // 取元素
- for key, value := range m {
- fmt.Println(key, value)
- switch data := value.(type) {
- case string:
- fmt.Println(data)
- case int:
- fmt.Println(data)
- }
- }
- }
来源: http://www.bubuko.com/infodetail-2983364.html