在读kubernetes源码的时候,读到https://github.com/kubernetes/kubernetes/blob/master/pkg/apis/extensions/types.go k8s的type的时候,遇到这样一段代码,
// represents a scaling request for a resource. type Scale struct { unversioned.TypeMeta `json:",inline"` // Standard object metadata; More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata. api.ObjectMeta `json:"metadata,omitempty"` // defines the behavior of the scale. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status. Spec ScaleSpec `json:"spec,omitempty"` // current status of the scale. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status. Read-only. Status ScaleStatus `json:"status,omitempty"` }
然后后面的 `` 里面的 json字符串,我就不明白了
这是Go语言的structTag
1 干什么用的?
如果希望手动配置结构体的成员和JSON字段的对应关系,可以在定义结构体的时候给成员打标签:
使用omitempty熟悉,如果该字段为nil或0值(数字0,字符串"",空数组[]等),则打包的JSON结果不会有这个字段。
2 怎么用啊 ? http://blog.csdn.net/tiaotiaoyly/article/details/38942311点击打开链接
type Message struct { Name string `json:"msg_name"` // 对应JSON的msg_name Body string `json:"body,omitempty"` // 如果为空置则忽略字段 Time int64 `json:"-"` // 直接忽略字段 } var m = Message{ Name: "Alice", Body: "", Time: 1294706395881547000, } data, err := json.Marshal(m) if err != nil { fmt.Printf(err.Error()) return } fmt.Println(string(data)) Output: {"msg_name":"Alice"}
有疑问加站长微信联系(非本文作者)