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 }