kubernetes学习笔记----- Go语言中structTag

来源:互联网 发布:网络和共享中心打不开 编辑:程序博客网 时间:2024/05/19 12:14

在读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_nameBody 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"}


0 0