...

Package json

import "sigs.k8s.io/json"
Overview
Index
Subdirectories

Overview ▾

func SyntaxErrorOffset

func SyntaxErrorOffset(err error) (isSyntaxError bool, offset int64)

SyntaxErrorOffset returns if the specified error is a syntax error produced by encoding/json or this package.

func UnmarshalCaseSensitivePreserveInts

func UnmarshalCaseSensitivePreserveInts(data []byte, v interface{}) error

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:

func UnmarshalStrict

func UnmarshalStrict(data []byte, v interface{}, strictOptions ...StrictOption) (strictErrors []error, err error)

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.

type Decoder

Decoder describes the decoding API exposed by `encoding/json#Decoder`

type Decoder interface {
    Decode(v interface{}) error
    Buffered() io.Reader
    Token() (gojson.Token, error)
    More() bool
    InputOffset() int64
}

func NewDecoderCaseSensitivePreserveInts

func NewDecoderCaseSensitivePreserveInts(r io.Reader) Decoder

NewDecoderCaseSensitivePreserveInts returns a decoder that matches the behavior of encoding/json#NewDecoder, with the following changes:

type FieldError

FieldError is an error that provides access to the path of the erroneous field

type FieldError interface {
    error
    // FieldPath provides the full path of the erroneous field within the json object.
    FieldPath() string
    // SetFieldPath updates the path of the erroneous field output in the error message.
    SetFieldPath(path string)
}

type StrictOption

type StrictOption int
const (
    // DisallowDuplicateFields returns strict errors if data contains duplicate fields
    DisallowDuplicateFields StrictOption = 1

    // DisallowUnknownFields returns strict errors if data contains unknown fields when decoding into typed structs
    DisallowUnknownFields StrictOption = 2
)

Subdirectories

Name Synopsis
..