gitee.com/zhongguo168a/gocodes@v0.0.0-20230609140523-e1828349603f/datax/jsonmap/any-to-any.go (about)

     1  package jsonmap
     2  
     3  import (
     4  	"errors"
     5  	"reflect"
     6  )
     7  
     8  func AnyToAny(from interface{}, to interface{}) (err error) {
     9  	fromref := reflect.ValueOf(from)
    10  	toref := reflect.ValueOf(to)
    11  	switch fromref.Kind() {
    12  	case reflect.Map:
    13  		switch toref.Kind() {
    14  		case reflect.Map:
    15  			MapToJsonMap(from.(map[string]interface{}), to.(map[string]interface{}))
    16  		case reflect.Struct:
    17  			err = MapToStruct(from.(map[string]interface{}), toref.Addr())
    18  		case reflect.Ptr:
    19  			err = MapToStruct(from.(map[string]interface{}), to)
    20  		}
    21  	case reflect.Struct:
    22  		switch toref.Kind() {
    23  		case reflect.Map:
    24  			err = StructToMap(from.(map[string]interface{}), to.(map[string]interface{}))
    25  		case reflect.Struct:
    26  			err = errors.New("not support")
    27  		}
    28  	}
    29  
    30  	return
    31  }