gitee.com/zhongguo168a/gocodes@v0.0.0-20230609140523-e1828349603f/datax/reflectx/loader/loader.go (about)

     1  package loader
     2  
     3  import (
     4  	"encoding/json"
     5  	"fmt"
     6  	"gitee.com/zhongguo168a/gocodes/datax/coderx"
     7  	"gitee.com/zhongguo168a/gocodes/datax/mapx"
     8  	"gitee.com/zhongguo168a/gocodes/datax/schemax"
     9  	"gitee.com/zhongguo168a/gocodes/myx/errorx"
    10  	"io/ioutil"
    11  )
    12  
    13  func Load(path string) (err error) {
    14  	file, readerr := ioutil.ReadFile(path)
    15  	if readerr != nil {
    16  		err = errorx.Wrap(err, fmt.Sprintf("read file %v", path))
    17  		return
    18  	}
    19  
    20  	schemamap := map[string]interface{}{}
    21  	err = json.Unmarshal(file, &schemamap)
    22  	if err != nil {
    23  		err = errorx.Wrap(err, fmt.Sprintf("json.Unmarshal"))
    24  		return
    25  	}
    26  
    27  	schemas := mapx.Array(schemamap, "schemas")
    28  	for _, val := range schemas {
    29  		m := val.(map[string]interface{})
    30  
    31  		obj, derr := coderx.NewMapToRef().SetSource(m).Create()
    32  		if derr != nil {
    33  			err = errorx.Wrap(derr, fmt.Sprintf("decoder"))
    34  			return
    35  		}
    36  
    37  		_ = schemax.AddDecl(obj.(schemax.IDecl), "")
    38  
    39  	}
    40  
    41  	return
    42  }