type Decoder … // NewDecoderCaseSensitivePreserveInts returns a decoder that matches the behavior of encoding/json#NewDecoder, with the following changes: // - When unmarshaling into a struct, JSON keys must case-sensitively match `json` tag names (for tagged struct fields) // or struct field names (for untagged struct fields), or they are treated as unknown fields and discarded. // - When unmarshaling a number into an interface value, it is unmarshaled as an int64 if // the JSON data does not contain a "." character and parses as an integer successfully and // does not overflow int64. Otherwise, the number is unmarshaled as a float64. // - If a syntax error is returned, it will not be of type encoding/json#SyntaxError, // but will be recognizeable by this package's IsSyntaxError() function. func NewDecoderCaseSensitivePreserveInts(r io.Reader) Decoder { … } // UnmarshalCaseSensitivePreserveInts parses the JSON-encoded data and stores the result in the value pointed to by v. // // UnmarshalCaseSensitivePreserveInts matches the behavior of encoding/json#Unmarshal, with the following changes: // - When unmarshaling into a struct, JSON keys must case-sensitively match `json` tag names (for tagged struct fields) // or struct field names (for untagged struct fields), or they are treated as unknown fields and discarded. // - When unmarshaling a number into an interface value, it is unmarshaled as an int64 if // the JSON data does not contain a "." character and parses as an integer successfully and // does not overflow int64. Otherwise, the number is unmarshaled as a float64. // - If a syntax error is returned, it will not be of type encoding/json#SyntaxError, // but will be recognizeable by this package's IsSyntaxError() function. func UnmarshalCaseSensitivePreserveInts(data []byte, v interface{ … } type StrictOption … const DisallowDuplicateFields … const DisallowUnknownFields … // UnmarshalStrict parses the JSON-encoded data and stores the result in the value pointed to by v. // Unmarshaling is performed identically to UnmarshalCaseSensitivePreserveInts(), returning an error on failure. // // If parsing succeeds, additional strict checks as selected by `strictOptions` are performed // and a list of the strict failures (if any) are returned. If no `strictOptions` are selected, // all supported strict checks are performed. // // Strict errors returned will implement the FieldError interface for the specific erroneous fields. // // Currently supported strict checks are: // - DisallowDuplicateFields: ensure the data contains no duplicate fields // - DisallowUnknownFields: ensure the data contains no unknown fields (when decoding into typed structs) // // Additional strict checks may be added in the future. // // Note that the strict checks do not change what is stored in v. // For example, if duplicate fields are present, they will be parsed and stored in v, // and errors about the duplicate fields will be returned in the strict error list. func UnmarshalStrict(data []byte, v interface{ … } // SyntaxErrorOffset returns if the specified error is a syntax error produced by encoding/json or this package. func SyntaxErrorOffset(err error) (isSyntaxError bool, offset int64) { … } type FieldError …