func()

in azkustodata/value/int.go [45:77]


func (in *Int) Unmarshal(i interface{}) error {
	if i == nil {
		in.value = nil
		return nil
	}

	var myInt int64

	switch v := i.(type) {
	case json.Number:
		var err error
		myInt, err = v.Int64()
		if err != nil {
			return parseError(in, i, err)
		}
	case float64:
		if v != math.Trunc(v) {
			return parseError(in, i, fmt.Errorf("float64 value was not an integer"))
		}
		myInt = int64(v)
	case int:
		myInt = int64(v)
	default:
		return convertError(in, i)
	}

	if myInt > math.MaxInt32 {
		return parseError(in, i, fmt.Errorf("value was too large for int32"))
	}
	val := int32(myInt)
	in.value = &val
	return nil
}