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 }