Tengo un problema al analizar los metadatos en el objeto ClusterRole de Json en Go.
Hice este ejemplo:
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: %s\n", clusterDemo.Name) fmt.Printf("Kind: %s\n", clusterDemo.Kind) }ejecutarlo con
# go get -v ./... # go run <filename> Name: Kind: ClusterRoleComo puede ver, el campo Tipo se analiza, pero el campo Nombre (parte de los metadatos) no.
Mi pregunta es ¿por qué? Parece que la estructura anidada no se analiza.
Se agradece cualquier ayuda, creo que me estoy perdiendo algo.
Cambie su importación de "k8s.io/kubernetes/pkg/apis/rbac" a rbac "k8s.io/api/rbac/v1" .
Deberia de funcionar.