code: func ConvertFrom(item *dynamodb.AttributeValue, v interface{}) (err error) {
  	defer func() {
  		if r := recover(); r != nil {
  			if e, ok := r.(runtime.Error); ok {
  				err = e
  			} else if s, ok := r.(string); ok {
  				err = fmt.Errorf(s)
  			} else {
  				err = r.(error)
  			}
  			item = nil
  		}
  	}()
  
  	rv := reflect.ValueOf(v)
  	if rv.Kind() != reflect.Ptr || rv.IsNil() {
  		return awserr.New("SerializationError",
  			fmt.Sprintf("v must be a non-nil pointer to an interface{} or struct, got %s",
  				rv.Type()),
  			nil)
  	}
  	if rv.Elem().Kind() != reflect.Interface && rv.Elem().Kind() != reflect.Struct {
  		return awserr.New("SerializationError",
  			fmt.Sprintf("v must be a non-nil pointer to an interface{} or struct, got %s",
  				rv.Type()),
  			nil)
  	}
  
  	res := convertFrom(item)
  
  	if isTyped(reflect.TypeOf(v)) {
  		err = convertToTyped(res, v)
  	} else if res != nil {
  		rv.Elem().Set(reflect.ValueOf(res))
  	}
  
  	return err
  }
docs: // ConvertFrom accepts a *dynamodb.AttributeValue and converts it to any interface{}.
  //
  // If v contains any structs, the result is first converted it to a interface{},
  // then JSON encoded/decoded it to convert to a struct, so `json` struct tags
  // are respected.
  //
  // Deprecated: Use Unmarshal instead