github.com/keysonzzz/kmg@v0.0.0-20151121023212-05317bfd7d39/encoding/kmgJson/marshalTypeFix.go (about) 1 package kmgJson 2 3 import ( 4 "github.com/bronze1man/kmg/encoding/kmgYaml" 5 ) 6 7 //修正序列化时的类型问题,此处直接把类型搞定,(此处会忽略对系统的json有效的tag) 8 //TODO finish it 9 func TypeFixWhenMarshal(obj interface{}) (out interface{}, err error) { 10 //a simple work around 11 yamlBytes, err := kmgYaml.Marshal(obj) 12 if err != nil { 13 return 14 } 15 var yamlData interface{} 16 err = kmgYaml.Unmarshal(yamlBytes, &yamlData) 17 if err != nil { 18 return 19 } 20 out, err = kmgYaml.Yaml2JsonTransformData(yamlData) 21 if err != nil { 22 return 23 } 24 return 25 } 26 27 /* 28 func marshalTypeFix(in reflect.Value) (out reflect.Value, err error) { 29 switch in.Kind() { 30 case reflect.Map: 31 32 case reflect.Struct: 33 case reflect.Ptr: 34 if !in.IsNil(){ 35 return marshalTypeFix(in.Elem()) 36 } 37 case reflect.Slice: 38 case reflect.Interface: 39 } 40 //其他类型不处理 41 return in,err 42 return nil,fmt.Errorf("[kmgJson.marshalTypeFix] not support in kind: %s", in.Kind()) 43 } 44 */