欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

go json 自定義類型

謝彥文2年前7瀏覽0評論

Go語言是一種快速、簡單、安全的編程語言,它提供了豐富的數據類型,其中JSON也是一個重要的數據類型。在Go語言中,我們可以自定義JSON類型,讓編程更加方便和靈活。

// 自定義Person類型
type Person struct {
Name string `json:"name"`
Age  int    `json:"age"`
}
// 實現MarshalJSON方法,自定義輸出格式
func (p Person) MarshalJSON() ([]byte, error) {
type Alias Person
return json.Marshal(&struct {
*Alias
AgeStr string `json:"age_str"`
}{
Alias:  (*Alias)(&p),
AgeStr: fmt.Sprintf("%d years old", p.Age),
})
}
// 示例代碼,將Person類型轉換為JSON格式
p := Person{Name: "Tom", Age: 28}
b, err := json.Marshal(p)
if err != nil {
fmt.Println("error:", err)
}
fmt.Println(string(b))
// Output: {"name":"Tom","age_str":"28 years old"}

通過上面的示例代碼,我們可以發現,自定義類型可以讓我們更加靈活地控制JSON數據的輸出格式。

除了通過實現MarshalJSON方法來控制JSON輸出格式外,我們還可以使用json包的標簽來控制輸出的JSON鍵名和值的格式。例如:

// 自定義Goods類型
type Goods struct {
Name     string  `json:"name"`
Price    float32 `json:"price,omitmepty"`
Quantity int     `json:"qty"`
}
// 示例代碼,將Goods類型轉換為JSON格式
g := Goods{Name: "Apple", Quantity: 10}
b, err := json.Marshal(g)
if err != nil {
fmt.Println("error:", err)
}
fmt.Println(string(b))
// Output: {"name":"Apple","qty":10}

在上面的示例代碼中,我們使用了json包的標簽來控制Price字段,在其為零值時,不會輸出到JSON中。

總之,自定義類型可以幫助我們更加靈活地控制JSON輸出格式,讓我們的編程更加方便和舒適。