go omitempty 忽略類型


nil

false

0

 

每個結構字段的編碼可以通過結構字段標簽中“json”鍵下存儲的格式字符串來定制。格式字符串給出字段的名稱,可能后跟逗號分隔的選項列表。名稱可能為空,以指定選項而不覆蓋默認字段名稱。

“omitempty”選項指定如果字段具有空值,定義為false,0,零指針,nil接口值以及任何空數組,切片,映射或字符串,則該字段應從編碼中省略。

作為特殊情況,如果字段標簽是“ - ”,則該字段總是被省略。請注意,名稱為“ - ”的字段仍然可以使用標簽“ - ,”生成。

 


package main

import (
"encoding/json"
"fmt"
)

type Person struct {
Name string `json:"name"`
Age int `json:"age"`
Addr string `json:"addr,omitempty"`
}

func main() {
p1 := Person{
Name: "taoge",
Age: 30,
}

data, err := json.Marshal(p1)
if err != nil {
panic(err)
}

fmt.Printf("%s\n", data)
fmt.Println(p1.Name, p1.Age, p1.Addr)

p2 := Person{
Name: "Cang Laoshi",
Age: 18,
Addr: "Japan",
}

data2, err := json.Marshal(p2)
if err != nil {
panic(err)
}

fmt.Printf("%s\n", data2)

fmt.Println(p2.Name, p2.Age, p2.Addr)
}
          結果:

{"name":"taoge","age":30}
taoge 30
{"name":"Cang Laoshi","age":18,"addr":"Japan"}
Cang Laoshi 18 Japan
          可以看到,有了omitempty后,如果addr為空, 則生成的json中沒有addr字段。
---------------------


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM