go语言yaml转map、map遍历

2023-04-10 15:25:56
  1. yaml文件内容

    apiVersion: policy/v1beta1
    kind: PodSecurityPolicy
    metadata:
      name: mysql-snapshot
    spec: 
      privileged: false
      allowPrivilegeEscalation: false
      volumes:
      - "*"
      hostNetwork: false
      hostIPC: false
      hostPID: false
      runAsUser:
        rule: RunAsAny
      seLinux:
        rule: RunAsAny
      supplementalGroups:
        rule: RunAsAny
      fsGroup:
        rule: RunAsAny
    
    
  2. 示例代码:实现了base64 编解码、yaml转map、以及map遍历

    func main() {
    f, err := os.Open("cmd/test.yaml")
    	if err != nil {
    		log.Fatalln(err)
    		return
    	}
    
    	input, _ := ioutil.ReadAll(f)
    	// base64 编码
    	encodeString := base64.StdEncoding.EncodeToString(input)
    fmt.Println(encodeString)
    
    
    // base64 解码
    	decodeBytes, err := base64.StdEncoding.DecodeString(encodeString)
    	if err != nil {
    		log.Fatalln(err)
    	}
    
    //yaml文件内容转换成map[interface{}]interface{})
    
    	resultMap := make(map[interface{}]interface{})
    	if err := yaml.Unmarshal(decodeBytes, &resultMap); err != nil {
    		// error handling
    		log.Fatalln(err)
    
    	}
    
    // 遍历map ,此处取metadata.name值
    	for key, value := range resultMap {
    		switch key := key.(type) {
    		case string:
    			if key == "metadata" {
    				switch value := value.(type) {
    				case string:
    				case map[interface{}]interface{}:
    					for k, v := range value {
    						switch k.(type) {
    						case string:
    						  if k == "name" {
    						  	fmt.Println("value=", v)
    						  }
    						}
    					}
    
    				}
    
    			}
    		}
    	}
    }
    
  3. 结果

    encodeString = "YXBpVmVyc2lvbjogcG9saWN5L3YxYmV0YTEKa2luZDogUG9kU2VjdXJpdHlQb2xpY3kKbWV0YWRhdGE6CiAgbmFtZTogbXlzcWwtc25hcHNob3QKc3BlYzogCiAgcHJpdmlsZWdlZDogZmFsc2UKICBhbGxvd1ByaXZpbGVnZUVzY2FsYXRpb246IGZhbHNlCiAgdm9sdW1lczoKICAtICIqIgogIGhvc3ROZXR3b3JrOiBmYWxzZQogIGhvc3RJUEM6IGZhbHNlCiAgaG9zdFBJRDogZmFsc2UKICBydW5Bc1VzZXI6CiAgICBydWxlOiBSdW5Bc0FueQogIHNlTGludXg6CiAgICBydWxlOiBSdW5Bc0FueQogIHN1cHBsZW1lbnRhbEdyb3VwczoKICAgIHJ1bGU6IFJ1bkFzQW55CiAgZnNHcm91cDoKICAgIHJ1bGU6IFJ1bkFzQW55Cg=="
    
    value=mysql-snapshot
    
    
  • 作者:lemom啊
  • 原文链接:https://blog.csdn.net/qq_22143251/article/details/110430886
    更新时间:2023-04-10 15:25:56