github.com/cnotch/ipchub@v1.1.0/utils/io.go (about) 1 // Copyright (c) 2019,CAOHONGJU All rights reserved. 2 // Use of this source code is governed by a MIT-style 3 // license that can be found in the LICENSE file. 4 5 package utils 6 7 import ( 8 "bytes" 9 "encoding/json" 10 "os" 11 ) 12 13 // EncodeJSONFile 编码 JSON 文件 14 func EncodeJSONFile(path string, obj interface{}) error { 15 f, err := os.OpenFile(path, os.O_CREATE|os.O_TRUNC|os.O_WRONLY, os.ModePerm) 16 if err != nil { 17 return err 18 } 19 20 defer f.Close() 21 22 var formatted bytes.Buffer 23 body, err := json.Marshal(obj) 24 if err != nil { 25 return err 26 } 27 28 if err := json.Indent(&formatted, body, "", "\t"); err != nil { 29 return err 30 } 31 32 if _, err := f.Write(formatted.Bytes()); err != nil { 33 return err 34 } 35 if err := f.Sync(); err != nil { 36 return err 37 } 38 39 return nil 40 }