bitbucket.org/ai69/amoy@v0.2.3/encoding.go (about)

     1  package amoy
     2  
     3  import (
     4  	"encoding/gob"
     5  	"encoding/json"
     6  	"io/ioutil"
     7  	"os"
     8  )
     9  
    10  // SaveJSONFile saves object as a JSON file.
    11  func SaveJSONFile(data interface{}, fileName string) error {
    12  	var (
    13  		bytes []byte
    14  		err   error
    15  	)
    16  	if !IsInterfaceNil(data) {
    17  		if bytes, err = json.MarshalIndent(data, "", "  "); err != nil {
    18  			return err
    19  		}
    20  	}
    21  	return ioutil.WriteFile(fileName, bytes, 0644)
    22  }
    23  
    24  // LoadJSONFile loads object from the given JSON file.
    25  func LoadJSONFile(data interface{}, fileName string) error {
    26  	var (
    27  		bytes []byte
    28  		err   error
    29  	)
    30  	if bytes, err = ioutil.ReadFile(fileName); err != nil {
    31  		return err
    32  	}
    33  	return json.Unmarshal(bytes, data)
    34  }
    35  
    36  // SaveGobFile saves object as a gob file.
    37  func SaveGobFile(data interface{}, fileName string) error {
    38  	// open for writing
    39  	f, err := os.Create(fileName)
    40  	if err != nil {
    41  		return err
    42  	}
    43  	defer f.Close()
    44  	// save to gob file
    45  	enc := gob.NewEncoder(f)
    46  	return enc.Encode(data)
    47  }
    48  
    49  // LoadGobFile loads object from the given gob file.
    50  func LoadGobFile(data interface{}, fileName string) error {
    51  	// open for reading
    52  	f, err := os.Open(fileName)
    53  	if err != nil {
    54  		return err
    55  	}
    56  	defer f.Close()
    57  	// load from gob file
    58  	dec := gob.NewDecoder(f)
    59  	return dec.Decode(data)
    60  }