GO结构体成员Tag中omitempty用法
如下所示结构体:
type Movie struct {
Title string
Year int `json:"released"`
Color bool `json:"color,omitempty"`
Actors []string
}
Color成员的Tag带了一个额外的omitempty选项,表示当Go语言结构体成员为空或零值时不生成该JSON对象。
package main
import (
"encoding/json"
"fmt"
"log"
)
type Movie struct {
Title string
Year int `json:"released"`
Color bool `json:"color,omitempty"`
Actors []string
}
func main() {
var movies = []Movie{
{Title: "Casablanca", Year: 1942, Color: false,
Actors: []string{"Humphrey Bogart", "Ingrid Bergman"}},
{Title: "Cool Hand Luke", Year: 1967, Color: true,
Actors: []string{"Paul Newman"}},
{Title: "Bullitt", Year: 1968, Color: true,
Actors: []string{"Steve McQueen", "Jacqueline Bisset"}},
}
data, err := json.MarshalIndent(movies, "", " ")
if err != nil {
log.Fatalf("Failed to marshal JSON. error: %v", err)
return
}
fmt.Printf("%s\n", data)
输出结果如下所示:
[
{
"Title": "Casablanca",
"released": 1942,
"Actors": [
"Humphrey Bogart",
"Ingrid Bergman"
]
},
{
"Title": "Cool Hand Luke",
"released": 1967,
"color": true,
"Actors": [
"Paul Newman"
]
},
{
"Title": "Bullitt",
"released": 1968,
"color": true,
"Actors": [
"Steve McQueen",
"Jacqueline Bisset"
]
}
]
从上面结果可以看出,Casablanca对应的对象中已经没有color属性了,因为false为bool类型的零值。

浙公网安备 33010602011771号