func (j JsonInterface) FloatSh() float32 {
	val, _ := CoerceFloat(j.data)
	return float32(val)
}
Coerce to Float, 0 returned if 0 or missing
package gou
import (
	"bytes"
	"encoding/json"
	"fmt"
	"io"
	"io/ioutil"
	"math"
	"net/http"
	"net/url"
	"strconv"
	"strings"
	"unicode/utf8"
)
func MakeJsonList(b []byte) []byte {
	if !bytes.HasPrefix(b, []byte{'['}) {
		b = append([]byte{'['}, b...)
		b = append(b, ']')
	}
	return b
}
func JsonString(v interface{}) string {
	b, err := json.Marshal(v)
	if err != nil {
		return `""`
	}
	return string(b)
}
func firstNonWsRune(by []byte) (r rune, ok bool) {
	for {
		if len(by) == 0 {
			return 0, false
		}
		r, numBytes := utf8.DecodeRune(by)
		switch r {
		case '\t', '\n', '\r', ' ':
			by = by[numBytes:]  
			continue
		case utf8.RuneError:  
			return 0, false
		}
		return r, true
	}
	return 0, false
}
func IsJson(by []byte) bool {
	firstRune, ok := firstNonWsRune(by)
	if !ok {
		return false
	}
	if firstRune == '[' || firstRune == '{' {
		return true
	}
	return false
}
func IsJsonArray(by []byte) bool {
	firstRune, ok := firstNonWsRune(by)
	if !ok {
		return false
	}
	if firstRune == '[' {
		return true
	}
	return false
}
func IsJsonObject(by []byte) bool {
	firstRune, ok := firstNonWsRune(by)
	if !ok {
		return false
	}
	if firstRune == '{' {
		return true
	}
	return false
}
type JsonRawWriter struct {
	bytes.Buffer
}
func (m *JsonRawWriter) MarshalJSON() ([]byte, error) {
	return m.Bytes(), nil
}
func (m *JsonRawWriter) Raw() json.RawMessage {
	return json.RawMessage(m.Bytes())
}
type JsonInterface struct {
	data interface{}
}
func (j *JsonInterface) Encode() ([]byte, error) {
	return j.MarshalJSON()
}
func (j *JsonInterface) MarshalJSON() ([]byte, error) {
	return json.Marshal(&j.data)
}
func (j *JsonInterface) UnmarshalJSON(raw []byte) error {
	return json.Unmarshal(raw, &j.data)
}
func (j *JsonInterface) String() (string, error) {
	return CoerceString(j.data)
}
func (j JsonInterface) StringSh() string {
	val, _ := CoerceString(j.data)
	return val
}
func (j *JsonInterface) Int() (int, error) {
	return CoerceInt(j.data)
}
func (j JsonInterface) IntSh() int {
	val, _ := CoerceInt(j.data)
	return val
}
func (j *JsonInterface) Float() (float32, error) {
	val, err := CoerceFloat(j.data)
	return float32(val), err
}