go.mondoo.com/cnquery@v0.0.0-20231005093811-59568235f6ea/providers-sdk/v1/util/convert/dict.go (about)

     1  // Copyright (c) Mondoo, Inc.
     2  // SPDX-License-Identifier: BUSL-1.1
     3  
     4  package convert
     5  
     6  import "encoding/json"
     7  
     8  // TODO: These functions are very heavyweight and prime candidates to
     9  // be replaced by better alternatives.
    10  
    11  // JsonToDict converts a raw golang object (typically loaded from JSON)
    12  // into a `dict` type
    13  func JsonToDict(v interface{}) (map[string]interface{}, error) {
    14  	res := make(map[string]interface{})
    15  
    16  	data, err := json.Marshal(v)
    17  	if err != nil {
    18  		return nil, err
    19  	}
    20  	err = json.Unmarshal([]byte(data), &res)
    21  	if err != nil {
    22  		return nil, err
    23  	}
    24  	return res, nil
    25  }
    26  
    27  // JsonToDictSlice converts a raw golang object (typically loaded from JSON)
    28  // into an array of `dict` types
    29  func JsonToDictSlice(v interface{}) ([]interface{}, error) {
    30  	res := []interface{}{}
    31  
    32  	data, err := json.Marshal(v)
    33  	if err != nil {
    34  		return nil, err
    35  	}
    36  	err = json.Unmarshal([]byte(data), &res)
    37  	if err != nil {
    38  		return nil, err
    39  	}
    40  	return res, nil
    41  }