色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

golang json注解

林國瑞1年前8瀏覽0評論

golang在處理json數據時,有時候需要對數據進行特定的注解。golang自帶了一個json包,通過在struct的字段上添加注解,我們可以定義如何序列化和反序列化這個struct。注解的形式是在字段的后面添加一個`json`的tag,tag的內容是一個字符串。

// 定義一個struct
type Person struct {
Name string `json:"name"`
Age  int    `json:"age"`
}
// 序列化
p := Person{Name: "Tom", Age: 18}
b, err := json.Marshal(p)
if err != nil {
fmt.Println(err)
}
fmt.Println(string(b)) // 輸出: {"name":"Tom","age":18}
// 反序列化
b2 := []byte(`{"name":"Tom","age":18}`)
var p2 Person
err = json.Unmarshal(b2, &p2)
if err != nil {
fmt.Println(err)
}
fmt.Println(p2) // 輸出: {Tom 18}

在以上示例中,我們在struct的字段后面添加了一個`json`注解,指定了序列化/反序列化后的key名稱。如果沒有添加注解,那么默認的key名稱就是字段的名稱。例如:

type Person struct {
Name string
Age  int
}
p := Person{Name: "Tom", Age: 18}
b, err := json.Marshal(p)
if err != nil {
fmt.Println(err)
}
fmt.Println(string(b)) // 輸出: {"Name":"Tom","Age":18}

同樣的,如果我們需要忽略某些字段,可以在`json`注解中添加`-`。

type Person struct {
Name string `json:"name"`
Age  int    `json:"-"`
}
p := Person{Name: "Tom", Age: 18}
b, err := json.Marshal(p)
if err != nil {
fmt.Println(err)
}
fmt.Println(string(b)) // 輸出: {"name":"Tom"}

在以上示例中,我們忽略了`Age`字段,因此在序列化后的結果中不包含該字段。