kubernetes/vendor/sigs.k8s.io/json/json.go

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