screen_widgets.go
func (p *PrecisionT) UnmarshalJSON(data []byte) error {
	var err error
	var precisionNum json.Number
	if err = json.Unmarshal(data, &precisionNum); err == nil {
		*p = PrecisionT(precisionNum)
		return nil
	}

	var precisionStr string
	if err = json.Unmarshal(data, &precisionStr); err == nil {
		*p = PrecisionT(precisionStr)
		return nil
	}

	var p0 PrecisionT
	*p = p0

	return err
}
func (p *PrecisionT) UnmarshalJSON(data []byte) error {
	var err error
	var precisionNum json.Number
	if err = json.Unmarshal(data, &precisionNum); err == nil {
		*p = PrecisionT(precisionNum)
		return nil
	}

	var precisionStr string
	if err = json.Unmarshal(data, &precisionStr); err == nil {
		*p = PrecisionT(precisionStr)
		return nil
	}

	var p0 PrecisionT
	*p = p0

	return err
}
// UnmarshalJSON is a Custom Unmarshal for PrecisionT. The Datadog API can
// return 1 (int), "1" (number, but a string type) or something like "100%" or
// "*" (string).