Update json.go

Current it is not possible to tell the default JSON binder to use DisallowUnknownFields (supported by jsoniter and default Go json decoder). Use package variable EnableDecoderKnownFieldsOnly as a switch.
This commit is contained in:
Stuart Innes 2018-11-18 19:27:57 +00:00 committed by GitHub
parent d6b2c13b18
commit e7f3a0ebbe
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -17,6 +17,10 @@ import (
// interface{} as a Number instead of as a float64. // interface{} as a Number instead of as a float64.
var EnableDecoderUseNumber = false var EnableDecoderUseNumber = false
// EnableDecoderKnownFieldsOnly is used to toggle DisallowUnknownFields
// which is disabled by default
var EnableDecoderKnownFieldsOnly = false
type jsonBinding struct{} type jsonBinding struct{}
func (jsonBinding) Name() string { func (jsonBinding) Name() string {
@ -36,6 +40,9 @@ func decodeJSON(r io.Reader, obj interface{}) error {
if EnableDecoderUseNumber { if EnableDecoderUseNumber {
decoder.UseNumber() decoder.UseNumber()
} }
if EnableDecoderKnownFieldsOnly {
decoder.DisallowUnknownFields()
}
if err := decoder.Decode(obj); err != nil { if err := decoder.Decode(obj); err != nil {
return err return err
} }