github.com/caos/orbos@v1.5.14-0.20221103111702-e6cd0cea7ad4/pkg/kubernetes/k8s/yaml.go (about)

     1  package k8s
     2  
     3  import "encoding/json"
     4  
     5  func MarshalYAML(ptr interface{}) (interface{}, error) {
     6  	if ptr == nil {
     7  		return nil, nil
     8  	}
     9  
    10  	intermediate, err := json.Marshal(ptr)
    11  	if err != nil {
    12  		return nil, err
    13  	}
    14  
    15  	result := make(map[string]interface{})
    16  
    17  	return result, json.Unmarshal(intermediate, &result)
    18  }
    19  
    20  func UnmarshalYAML(ptr interface{}, unmarshal func(interface{}) error) error {
    21  	generic := make(map[string]interface{})
    22  	if err := unmarshal(&generic); err != nil {
    23  		return err
    24  	}
    25  
    26  	intermediate, err := json.Marshal(generic)
    27  	if err != nil {
    28  		return err
    29  	}
    30  
    31  	return json.Unmarshal(intermediate, ptr)
    32  }