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  */