github.com/zhangdapeng520/zdpgo_json@v0.1.5/json.go (about) 1 package zdpgo_json 2 3 import ( 4 "os" 5 6 "github.com/zhangdapeng520/zdpgo_json/jsoniter" 7 "github.com/zhangdapeng520/zdpgo_json/query" 8 ) 9 10 var ( 11 json = jsoniter.ConfigCompatibleWithStandardLibrary 12 ) 13 14 // Json 处理json的核心对象 15 type Json struct { 16 Query *query.Query // 查询核心对象 17 18 // 方法列表 19 Dump func(filePath string, obj interface{}) error 20 Load func(filePath string, obj interface{}) error 21 Dumps func(obj interface{}) (string, error) 22 Loads func(str string, obj interface{}) error 23 } 24 25 // New 创建新的处理json的对象示例 26 func New() *Json { 27 j := Json{} 28 29 // 实例化查询对象 30 j.Query = query.NewQuery() 31 32 // 实例化方法 33 j.Dump = Dump 34 j.Load = Load 35 j.Dumps = Dumps 36 j.Loads = Loads 37 38 // 返回对象 39 return &j 40 } 41 42 // Dumps 将Golang对象转换为json字符串 43 func Dumps(obj interface{}) (string, error) { 44 rs, err := json.Marshal(obj) 45 return string(rs), err 46 } 47 48 // Loads 将字符串转换为Golang对象 49 func Loads(str string, obj interface{}) error { 50 err := json.Unmarshal([]byte(str), obj) 51 return err 52 } 53 54 // Dump 将Golang对象写入到json文件 55 func Dump(filePath string, obj interface{}) error { 56 57 // 创建json文件 58 filePtr, err := os.Create(filePath) 59 if err != nil { 60 return err 61 } 62 defer filePtr.Close() 63 64 // 写入json数据 65 encoder := json.NewEncoder(filePtr) 66 err = encoder.Encode(obj) 67 return err 68 } 69 70 // Load 将json文件读取并转换为Golang对象 71 func Load(filePath string, obj interface{}) error { 72 73 // 打开json文件 74 filePtr, err := os.Open(filePath) 75 if err != nil { 76 return err 77 } 78 defer filePtr.Close() 79 80 // 读取json文件 81 decoder := json.NewDecoder(filePtr) 82 err = decoder.Decode(obj) 83 return err 84 }