All packages

encoding/json

import "encoding/json"

Package json implements encoding and decoding of JSON as defined in RFC 7159. The mapping between JSON and Go values is described in the documentation for the Marshal and Unmarshal functions. See "JSON and Go" for an introduction to this package: https://golang.org/doc/articles/json_and_go.html # Security Considerations The JSON standard (RFC 7159) is lax in its definition of a number of parser behaviors. As such, many JSON parsers behave differently in various scenarios. These differences...

Go 1.26.1

Functions

func Compact(dst *bytes.Buffer, src []byte) error

Compact appends to dst the JSON-encoded src with insignificant space characters elided.

encoding/json/indent.go:43

func HTMLEscape(dst *bytes.Buffer, src []byte)

HTMLEscape appends to dst the JSON-encoded src with <, >, &, U+2028 and U+2029 characters inside string literals changed to \u003c, \u003e, \u0026, \u2028, \u2029 so that the JSON will be safe to embed inside HTML <script> tags. For historical reasons, web browsers don't honor standard HTML escaping within <script> tags, so an alternative JSON encoding must be used.

encoding/json/indent.go:16

func Indent(dst *bytes.Buffer, src []byte, prefix string, indent string) error

Indent appends to dst an indented form of the JSON-encoded src. Each element in a JSON object or array begins on a new, indented line beginning with prefix followed by one or more copies of indent according to the indentation nesting. The data appended to dst does not begin with the prefix nor any indentation, to make it easier to embed inside other formatted JSON data. Although leading space characters (space, tab, carriage return, newline) at the beginning of src are dropped, trailing space...

encoding/json/indent.go:120

func Marshal(v any) ([]byte, error)

Marshal returns the JSON encoding of v. Marshal traverses the value v recursively. If an encountered value implements [Marshaler] and is not a nil pointer, Marshal calls [Marshaler.MarshalJSON] to produce JSON. If no [Marshaler.MarshalJSON] method is present but the value implements [encoding.TextMarshaler] instead, Marshal calls [encoding.TextMarshaler.MarshalText] and encodes the result as a JSON string. The nil pointer exception is not strictly necessary but mimics a similar, necessary ex...

encoding/json/encode.go:205

func MarshalIndent(v any, prefix string, indent string) ([]byte, error)

MarshalIndent is like [Marshal] but applies [Indent] to format the output. Each JSON element in the output will begin on a new line beginning with prefix followed by one or more copies of indent according to the indentation nesting.

encoding/json/encode.go:221

func NewDecoder(r io.Reader) *Decoder

NewDecoder returns a new decoder that reads from r. The decoder introduces its own buffering and may read data from r beyond the JSON values requested.

encoding/json/stream.go:33

func NewEncoder(w io.Writer) *Encoder

NewEncoder returns a new encoder that writes to w.

encoding/json/stream.go:194

func Unmarshal(data []byte, v any) error

Unmarshal parses the JSON-encoded data and stores the result in the value pointed to by v. If v is nil or not a pointer, Unmarshal returns an [InvalidUnmarshalError]. Unmarshal uses the inverse of the encodings that [Marshal] uses, allocating maps, slices, and pointers as necessary, with the following additional rules: To unmarshal JSON into a pointer, Unmarshal first handles the case of the JSON being the JSON literal null. In that case, Unmarshal sets the pointer to nil. Otherwise, Unmars...

encoding/json/decode.go:102

func Valid(data []byte) bool

Valid reports whether data is a valid JSON encoding.

encoding/json/scanner.go:24

Types

type Decoder struct {
	// contains filtered or unexported fields
}

A Decoder reads and decodes JSON values from an input stream.

encoding/json/stream.go:16

func (dec *Decoder) Buffered() io.Reader

Buffered returns a reader of the data remaining in the Decoder's buffer. The reader is valid until the next call to [Decoder.Decode].

encoding/json/stream.go:85

func (dec *Decoder) Decode(v any) error

Decode reads the next JSON-encoded value from its input and stores it in the value pointed to by v. See the documentation for [Unmarshal] for details about the conversion of JSON into a Go value.

encoding/json/stream.go:51

func (dec *Decoder) DisallowUnknownFields()

DisallowUnknownFields causes the Decoder to return an error when the destination is a struct and the input contains object keys which do not match any non-ignored, exported fields in the destination.

encoding/json/stream.go:44

func (dec *Decoder) InputOffset() int64

InputOffset returns the input stream byte offset of the current decoder position. The offset gives the location of the end of the most recently returned token and the beginning of the next token.

encoding/json/stream.go:512

func (dec *Decoder) More() bool

More reports whether there is another element in the current array or object being parsed.

encoding/json/stream.go:485

func (dec *Decoder) Token() (Token, error)

Token returns the next JSON token in the input stream. At the end of the input stream, Token returns nil, [io.EOF]. Token guarantees that the delimiters [ ] { } it returns are properly nested and matched: if Token encounters an unexpected delimiter in the input, it will return an error. The input stream consists of basic JSON values—bool, string, number, and null—along with delimiters [ ] { } of type [Delim] to mark the start and end of arrays and objects. Commas and colons are elided.

encoding/json/stream.go:370

func (dec *Decoder) UseNumber()

UseNumber causes the Decoder to unmarshal a number into an interface value as a [Number] instead of as a float64.

encoding/json/stream.go:39

type Delim rune

A Delim is a JSON array or object delimiter, one of [ ] { or }.

encoding/json/stream.go:353

func (d Delim) String() string

encoding/json/stream.go:355

type Encoder struct {
	// contains filtered or unexported fields
}

An Encoder writes JSON values to an output stream.

encoding/json/stream.go:183

func (enc *Encoder) Encode(v any) error

Encode writes the JSON encoding of v to the stream, with insignificant space characters elided, followed by a newline character. See the documentation for [Marshal] for details about the conversion of Go values to JSON.

encoding/json/stream.go:204

func (enc *Encoder) SetEscapeHTML(on bool)

SetEscapeHTML specifies whether problematic HTML characters should be escaped inside JSON quoted strings. The default behavior is to escape &, <, and > to \u0026, \u003c, and \u003e to avoid certain safety problems that can arise when embedding JSON in HTML. In non-HTML settings where the escaping interferes with the readability of the output, SetEscapeHTML(false) disables this behavior.

encoding/json/stream.go:254

func (enc *Encoder) SetIndent(prefix string, indent string)

SetIndent instructs the encoder to format each subsequent encoded value as if indented by the package-level function Indent(dst, src, prefix, indent). Calling SetIndent("", "") disables indentation.

encoding/json/stream.go:242

type InvalidUnmarshalError struct {
	Type reflect.Type
}

An InvalidUnmarshalError describes an invalid argument passed to [Unmarshal]. (The argument to [Unmarshal] must be a non-nil pointer.)

encoding/json/decode.go:158

func (e *InvalidUnmarshalError) Error() string

encoding/json/decode.go:162

type InvalidUTF8Error struct {
	S string // the whole string value that caused the error
}

Before Go 1.2, an InvalidUTF8Error was returned by [Marshal] when attempting to encode a string value with invalid UTF-8 sequences. As of Go 1.2, [Marshal] instead coerces the string to valid UTF-8 by replacing invalid bytes with the Unicode replacement rune U+FFFD. Deprecated: No longer used; kept for compatibility.

encoding/json/encode.go:267

func (e *InvalidUTF8Error) Error() string

encoding/json/encode.go:271

type Marshaler interface {
	MarshalJSON() ([]byte, error)
}

Marshaler is the interface implemented by types that can marshal themselves into valid JSON.

encoding/json/encode.go:236

type MarshalerError struct {
	Type reflect.Type
	Err  error
	// contains filtered or unexported fields
}

A MarshalerError represents an error from calling a [Marshaler.MarshalJSON] or [encoding.TextMarshaler.MarshalText] method.

encoding/json/encode.go:277

func (e *MarshalerError) Error() string

encoding/json/encode.go:283

func (e *MarshalerError) Unwrap() error

Unwrap returns the underlying error.

encoding/json/encode.go:294

type Number string

A Number represents a JSON number literal.

encoding/json/decode.go:191

func (n Number) Float64() (float64, error)

Float64 returns the number as a float64.

encoding/json/decode.go:197

func (n Number) Int64() (int64, error)

Int64 returns the number as an int64.

encoding/json/decode.go:202

func (n Number) String() string

String returns the literal text of the number.

encoding/json/decode.go:194

type RawMessage []byte

RawMessage is a raw encoded JSON value. It implements [Marshaler] and [Unmarshaler] and can be used to delay JSON decoding or precompute a JSON encoding.

encoding/json/stream.go:261

func (m RawMessage) MarshalJSON() ([]byte, error)

MarshalJSON returns m as the JSON encoding of m.

encoding/json/stream.go:264

func (m *RawMessage) UnmarshalJSON(data []byte) error

UnmarshalJSON sets *m to a copy of data.

encoding/json/stream.go:272

type SyntaxError struct {
	Offset int64 // error occurred after reading Offset bytes
	// contains filtered or unexported fields
}

A SyntaxError is a description of a JSON syntax error. [Unmarshal] will return a SyntaxError if the JSON can't be parsed.

encoding/json/scanner.go:49

func (e *SyntaxError) Error() string

encoding/json/scanner.go:54

type Token any

A Token holds a value of one of these types: - [Delim], for the four JSON delimiters [ ] { } - bool, for JSON booleans - float64, for JSON numbers - [Number], for JSON numbers - string, for JSON string literals - nil, for JSON null

encoding/json/stream.go:291

type Unmarshaler interface {
	UnmarshalJSON([]byte) error
}

Unmarshaler is the interface implemented by types that can unmarshal a JSON description of themselves. The input can be assumed to be a valid encoding of a JSON value. UnmarshalJSON must copy the JSON data if it wishes to retain the data after returning.

encoding/json/decode.go:121

type UnmarshalFieldError struct {
	Key   string
	Type  reflect.Type
	Field reflect.StructField
}

An UnmarshalFieldError describes a JSON object key that led to an unexported (and therefore unwritable) struct field. Deprecated: No longer used; kept for compatibility.

encoding/json/decode.go:146

func (e *UnmarshalFieldError) Error() string

encoding/json/decode.go:152

type UnmarshalTypeError struct {
	Value  string       // description of JSON value - "bool", "array", "number -5"
	Type   reflect.Type // type of Go value it could not be assigned to
	Offset int64 ...

An UnmarshalTypeError describes a JSON value that was not appropriate for a value of a specific Go type.

encoding/json/decode.go:127

func (e *UnmarshalTypeError) Error() string

encoding/json/decode.go:135

type UnsupportedTypeError struct {
	Type reflect.Type
}

An UnsupportedTypeError is returned by [Marshal] when attempting to encode an unsupported value type.

encoding/json/encode.go:242

func (e *UnsupportedTypeError) Error() string

encoding/json/encode.go:246

type UnsupportedValueError struct {
	Value reflect.Value
	Str   string
}

An UnsupportedValueError is returned by [Marshal] when attempting to encode an unsupported value.

encoding/json/encode.go:252

func (e *UnsupportedValueError) Error() string

encoding/json/encode.go:257