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  }