Avoid []byte=>float64=>int64 conversion, instead going directly from []byte=>int64, to avoid issues with intermediate float64 representation

This commit is contained in:
Ryan LaHue 2014-09-16 17:43:59 -07:00
parent f565b8c15b
commit c0d98407b9

5
int.go
View file

@ -46,9 +46,10 @@ func (i *Int) UnmarshalJSON(data []byte) error {
var err error
var v interface{}
json.Unmarshal(data, &v)
switch x := v.(type) {
switch v.(type) {
case float64:
i.Int64 = int64(x)
// Unmarshal again, directly to int64, to avoid intermediate float64
err = json.Unmarshal(data, &i.Int64)
case map[string]interface{}:
err = json.Unmarshal(data, &i.NullInt64)
case nil: