github.com/eframework-cn/EP.GO.UTIL@v1.0.0/xconfig/serialize.go (about) 1 //-----------------------------------------------------------------------// 2 // GNU GENERAL PUBLIC LICENSE // 3 // Version 2, June 1991 // 4 // // 5 // Copyright (C) EFramework, https://eframework.cn, All rights reserved. // 6 // Everyone is permitted to copy and distribute verbatim copies // 7 // of this license document, but changing it is not allowed. // 8 // SEE LICENSE.md FOR MORE DETAILS. // 9 //-----------------------------------------------------------------------// 10 11 // 提供解析json、xml、ini等格式的配置文件解析. 12 package xconfig 13 14 import ( 15 "encoding/json" 16 "encoding/xml" 17 18 "github.com/eframework-cn/EP.GO.UTIL/xfs" 19 "github.com/eframework-cn/EP.GO.UTIL/xlog" 20 ) 21 22 type parseFunc func(data []byte, v interface{}) error 23 24 func doParse(parse parseFunc, file string, out interface{}) error { 25 xlog.Notice("xconfig.doParse: load file at %v", file) 26 27 data := xfs.ReadBytes(file) 28 if data != nil { 29 if err := parse(data, out); err != nil { 30 xlog.Error("xconfig.doParse: parse failed, err=%v", file, err) 31 return err 32 } 33 } 34 35 return nil 36 } 37 38 // 反序列化Json 39 // file: json文件 40 // out: obj对象 41 func JsonToObj(file string, obj interface{}) error { 42 return doParse(json.Unmarshal, file, obj) 43 } 44 45 // 反序列化Xml 46 // file: xml文件 47 // out: obj对象 48 func XmlToObj(file string, obj interface{}) error { 49 if err := doParse(xml.Unmarshal, file, obj); err != nil { 50 return err 51 } 52 return nil 53 }