1、Go語言map與json串相互轉化
- map轉為Json串(本質是string),先把map轉為byte數組,再把byte數組轉為Json串
- Json串(本質是string)轉為map,先把Json串轉為byte數組,再把byte數組轉為map
package main
import (
"encoding/json"
"fmt"
)
func main() {
//map轉為json串(本質是string)
//先把map轉為byte數組
//再把byte數組轉為json串
DataMap := map[string]int{"a": 1, "b": 2, "c": 3}
marshal, err := json.Marshal(DataMap)
if err != nil {
fmt.Printf("Map轉化為byte數組失敗,異常:%s\n", err)
return
}
fmt.Printf("Map轉化為byte數組成功:%v\n", marshal)
fmt.Printf("byte數組轉化為Json串成功:%s\n", string(marshal))
//json串(本質是string)轉為map
//先把json串轉為byte數組
//再把byte數組轉為map
dataStr := `{"a":1,"b":2,"c":3}`
var dataMap map[string]int
err = json.Unmarshal([]byte(dataStr), &dataMap)
if err != nil {
fmt.Printf("Json串轉化為Map失敗,異常:%s\n", err)
return
}
fmt.Printf("Json串(本質是string)轉化為Map成功:%v", dataMap)
}

2、結構體或者結構體數組轉為Json串
package main
import (
"encoding/json"
"fmt"
)
type S struct {
Name string `json:"name,omitempty"`
Age int `json:"age,omitempty"`
Sex string `json:"sex,omitempty"`
}
func main() {
s := S{
Name: "小紅",
Age: 18,
Sex: "女",
}
marshal, err := json.Marshal(s)
if err != nil {
return
}
fmt.Println(string(marshal))
sList := []S{{
Name: "小紅",
Age: 18,
Sex: "女",
}, {
Name: "小李",
Age: 20,
Sex: "男",
}, {
Name: "夏龍",
Age: 18,
Sex: "女",
}}
marshal, err = json.Marshal(sList)
if err != nil {
return
}
fmt.Println(string(marshal))
}