golang之结构体标签

xiaoxiao2025-04-05  13

我们在解析结构体和json时,总会出现空值,特别是在结构体用作双方定义的数据结构时,有时候并空值其实并不是我们需要的字段

package main import ( "fmt" "encoding/json" ) type KeyUsage struct { UserName string `json:"username"` Algorithm string `json:"algo"` Size uint `json:"size"` //Usage string `json:"usage, omitempty"` 1 //Usage string `json:"usage ,omitempty"` 2 //Usage string `json:"usage,omitempty"` 3 Usage string `json:"usage"` // 4 } func main() { key := KeyUsage{ UserName: "hello", Algorithm: "rsa", Size: 2048, Usage :"", } keyBytes, err := json.Marshal(key) if err != nil { //... } fmt.Println(string(keyBytes) }

执行go run, 在 KeyUsage 定义中的1 2 3 4 结果分别如下:

{"username":"hello","algo":"rsa","size":2048,"usage":""} {"username":"hello","algo":"rsa","size":2048} {"username":"hello","algo":"rsa","size":2048} {"username":"hello","algo":"rsa","size":2048,"usage":""}

从上打印可以看出,如果不打印为空的字符串,需要在结构体后面的json标签中加上忽略空值 omitempty字段。 注意: 逗号与omitempty是放在一块儿的。中间不能有空格,否则空字段不会被忽略 PS: go version go1.11 darwin/amd64

转载请注明原文地址: https://www.6miu.com/read-5027535.html

最新回复(0)