Help us shape the future of Go! Take the 2026 Go Developer Survey

encoder

package
v1.3.6 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 10, 2022 License: Apache-2.0 Imports: 25 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Encode

func Encode(val interface{}, opts Options) ([]byte, error)

Encode returns the JSON encoding of val, encoded with opts.

func EncodeIndented

func EncodeIndented(val interface{}, prefix string, indent string, opts Options) ([]byte, error)

EncodeIndented is like Encode 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.

func EncodeInto

func EncodeInto(buf *[]byte, val interface{}, opts Options) error

EncodeInto is like Encode but uses a user-supplied buffer instead of allocating a new one.

func HTMLEscape

func HTMLEscape(dest []byte, src []byte) []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.

func Pretouch

func Pretouch(vt reflect.Type, opts ...option.CompileOption) error

Pretouch compiles vt ahead-of-time to avoid JIT compilation on-the-fly, in order to reduce the first-hit latency.

Opts are the compile options, for example, "option.WithCompileRecursiveDepth" is a compile option to set the depth of recursive compile for the nested struct type.

func Quote

func Quote(s string) string

Quote returns the JSON-quoted version of s.

func Valid

func Valid(data []byte) (ok bool, start int)

Valid validates json and returns first non-blank character position, if it is only one valid json value. Otherwise returns invalid character position using start.

Types

type Encoder

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

Encoder represents a specific set of encoder configurations.

func (*Encoder) Encode

func (self *Encoder) Encode(v interface{}) ([]byte, error)

Encode returns the JSON encoding of v.

func (*Encoder) SetCompactMarshaler

func (self *Encoder) SetCompactMarshaler(f bool)

SetCompactMarshaler specifies if option CompactMarshaler opens

func (*Encoder) SetEscapeHTML

func (self *Encoder) SetEscapeHTML(f bool)

SetEscapeHTML specifies if option EscapeHTML opens

func (*Encoder) SetIndent

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

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

func (*Encoder) SetNoQuoteTextMarshaler

func (self *Encoder) SetNoQuoteTextMarshaler(f bool)

SetNoQuoteTextMarshaler specifies if option NoQuoteTextMarshaler opens

func (*Encoder) SortKeys

func (self *Encoder) SortKeys() *Encoder

SortKeys enables the SortMapKeys option.

type Options

type Options uint64

Options is a set of encoding options.

const (
	// SortMapKeys indicates that the keys of a map needs to be sorted
	// before serializing into JSON.
	// WARNING: This hurts performance A LOT, USE WITH CARE.
	SortMapKeys Options = 1 << bitSortMapKeys

	// EscapeHTML indicates encoder to escape all HTML characters
	// after serializing into JSON (see https://pkg.go.dev/encoding/json#HTMLEscape).
	// WARNING: This hurts performance A LOT, USE WITH CARE.
	EscapeHTML Options = 1 << bitEscapeHTML

	// CompactMarshaler indicates that the output JSON from json.Marshaler
	// is always compact and needs no validation
	CompactMarshaler Options = 1 << bitCompactMarshaler

	// NoQuoteTextMarshaler indicates that the output text from encoding.TextMarshaler
	// is always escaped string and needs no quoting
	NoQuoteTextMarshaler Options = 1 << bitNoQuoteTextMarshaler

	// NoNullSliceOrMap indicates all empty Array or Object are encoded as '[]' or '{}',
	// instead of 'null'
	NoNullSliceOrMap Options = 1 << bitNoNullSliceOrMap

	// CompatibleWithStd is used to be compatible with std encoder.
	CompatibleWithStd Options = SortMapKeys | EscapeHTML | CompactMarshaler
)

type StreamEncoder

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

StreamEncoder uses io.Writer as

func NewStreamEncoder

func NewStreamEncoder(w io.Writer) *StreamEncoder

NewStreamEncoder adapts to encoding/json.NewDecoder API.

NewStreamEncoder returns a new encoder that write to w.

func (*StreamEncoder) Encode

func (enc *StreamEncoder) Encode(val interface{}) (err error)

Encode encodes interface{} as JSON to io.Writer

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL