gitee.com/zhongguo168a/gocodes@v0.0.0-20230609140523-e1828349603f/datax/schemax/init.go (about) 1 package schemax 2 3 import ( 4 "gitee.com/zhongguo168a/gocodes/datax" 5 "gitee.com/zhongguo168a/gocodes/datax/schemax/basickind" 6 "gitee.com/zhongguo168a/gocodes/myx/errorx" 7 ) 8 9 func InitObj(obj datax.M, decl *ClassDecl) (err error) { 10 return initObj(obj, decl) 11 12 } 13 14 func initObj(obj datax.M, decl *ClassDecl) (err error) { 15 for _, field := range decl.GetAllField() { 16 fname := field.Alias() 17 switch typ := field.Type.(type) { 18 case *ClassType: 19 if field.Value == "{}" { 20 obj[fname] = map[string]interface{}{} 21 } else { 22 var m map[string]interface{} 23 obj[fname] = m 24 } 25 case *ArrayType: 26 //obj[fname] = []interface{}{} 27 case *MapType: 28 if field.Value == "{}" { 29 obj[fname] = map[string]interface{}{} 30 } else { 31 var m map[string]interface{} 32 obj[fname] = m 33 } 34 case *EnumType: 35 iedecl := GetDeclByKey(typ.Decl) 36 if iedecl == nil { 37 return errorx.New("enum decl not found", datax.M{"fname": fname, "decl": typ.Decl}) 38 } 39 edecl := iedecl.(*EnumDecl) 40 obj[fname] = basickind.DefaultValue(basickind.Kind(edecl.Kind)) 41 case *BasicType: 42 obj[fname] = basickind.DefaultValue(typ.Kind) 43 } 44 } 45 return nil 46 }