我在Go中从Json解析ClusterRole对象中的元数据有问题。
我做了这个例子:
package main
import (
"encoding/json"
"fmt"
"k8s.io/kubernetes/pkg/apis/rbac"
)
func main() {
clusterDemo := rbac.ClusterRole{}
clusterRolesRaw := `{
"apiVersion": "rbac.authorization.k8s.io/v1",
"kind": "ClusterRole",
"metadata": {
"creationTimestamp": "2021-01-21T08:07:13Z",
"managedFields": [],
"name": "kubeadm:get-nodes",
"resourceVersion": "220",
"uid": "c78a8b10-cd20-4b64-8e4d-4f7f758c7b65"
},
"rules": []
}`
err := json.Unmarshal([]byte(clusterRolesRaw), &clusterDemo)
if err != nil {
fmt.Printf("unmarshal file: %v", err)
}
fmt.Printf("Name: %sn", clusterDemo.Name)
fmt.Printf("Kind: %sn", clusterDemo.Kind)
}
用
运行# go get -v ./...
# go run <filename>
Name:
Kind: ClusterRole
可以看到,Kind字段被解析了,但是Name字段(元数据的一部分)没有被解析。
我的问题是为什么?看起来嵌套结构没有被解析。任何帮助都是感激的,我想我遗漏了一些东西
将"k8s.io/kubernetes/pkg/apis/rbac"
更改为rbac "k8s.io/api/rbac/v1"
。
应该可以。