在 Go 專案將 Struct 轉換為 JSON 字串

做法

假設有以下結構體:

1
2
3
4
type User struct {
Name string `json:"name,omitempty"`
Age int `json:"age,omitempty"`
}

方法一

使用 json.Marshal() 方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
func main() {
v := User{
Name: "Memo Chou",
Age: 18,
}

b, err := json.Marshal(v)
if err != nil {
log.Fatal(err.Error())
}

fmt.Println(string(b))
}

輸出如下:

1
{"name":"Memo Chou","age":18}

方法二

使用 json.NewEncoder() 方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
func main() {
v := User{
Name: "Memo Chou",
Age: 18,
}

b := &bytes.Buffer{}
if err := json.NewEncoder(b).Encode(v); err != nil {
log.Fatal(err.Error())
}

fmt.Println(b.String())
}

輸出如下:

1
{"name":"Memo Chou","age":18}
  • 如果要避免 HTML 跳脫字元被轉譯,可以使用 SetEscapeHTML() 方法。