Copyright 2016 Google LLC. Use of this source code is governed by a BSD-style license that can be found in the LICENSE file.

package gensupport

import (
	
	
	
	
)
JSONFloat64 is a float64 that supports proper unmarshaling of special float values in JSON, according to https://developers.google.com/protocol-buffers/docs/proto3#json. Although that is a proto-to-JSON spec, it applies to all Google APIs. The jsonpb package (https://github.com/golang/protobuf/blob/master/jsonpb/jsonpb.go) has similar functionality, but only for direct translation from proto messages to JSON.
type JSONFloat64 float64

func ( *JSONFloat64) ( []byte) error {
	var  float64
	if  := json.Unmarshal(, &);  == nil {
		* = JSONFloat64()
		return nil
	}
	var  string
	if  := json.Unmarshal(, &);  == nil {
		switch  {
		case "NaN":
			 = math.NaN()
		case "Infinity":
			 = math.Inf(1)
		case "-Infinity":
			 = math.Inf(-1)
		default:
			return fmt.Errorf("google.golang.org/api/internal: bad float string %q", )
		}
		* = JSONFloat64()
		return nil
	}
	return errors.New("google.golang.org/api/internal: data not float or string")