easyjson

package module
v0.9.1 Latest Latest
Warning

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

Go to latest
Published: Mar 10, 2022 License: MIT Imports: 7 Imported by: 0

README

easyjson

mailru easyjson customized for internal valyala/bytebufferpool usage instead of custom bytes buffer mechanics

Documentation

Overview

Package easyjson contains marshaler/unmarshaler interfaces and helper functions.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Marshal

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

Marshal returns data as a single byte slice. Method is suboptimal as the data is likely to be copied from a chain of smaller chunks.

func MarshalToHTTPResponseWriter

func MarshalToHTTPResponseWriter(v Marshaler, w http.ResponseWriter) (started bool, written int, err error)

MarshalToHTTPResponseWriter sets Content-Length and Content-Type headers for the http.ResponseWriter, and send the data to the writer. started will be equal to false if an error occurred before any http.ResponseWriter methods were actually invoked (in this case a 500 reply is possible).

func MarshalToWriter

func MarshalToWriter(v Marshaler, w io.Writer) (written int, err error)

MarshalToWriter marshals the data to an io.Writer.

func Unmarshal

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

Unmarshal decodes the JSON in data into the object.

func UnmarshalFromReader

func UnmarshalFromReader(r io.Reader, v Unmarshaler) error

UnmarshalFromReader reads all the data in the reader and decodes as JSON into the object.

Types

type Marshaler

type Marshaler interface {
	MarshalEasyJSON(w *jwriter.Writer)
}

Marshaler is an easyjson-compatible marshaler interface.

type MarshalerUnmarshaler

type MarshalerUnmarshaler interface {
	Marshaler
	Unmarshaler
}

MarshalerUnmarshaler is an easyjson-compatible marshaler/unmarshaler interface.

type Optional

type Optional interface {
	IsDefined() bool
}

Optional defines an undefined-test method for a type to integrate with 'omitempty' logic.

type RawMessage

type RawMessage []byte

RawMessage is a raw piece of JSON (number, string, bool, object, array or null) that is extracted without parsing and output as is during marshaling.

func (*RawMessage) IsDefined

func (v *RawMessage) IsDefined() bool

IsDefined is required for integration with omitempty easyjson logic.

func (*RawMessage) MarshalEasyJSON

func (v *RawMessage) MarshalEasyJSON(w *jwriter.Writer)

MarshalEasyJSON does JSON marshaling using easyjson interface.

func (RawMessage) MarshalJSON

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

MarshalJSON implements encoding/json.Marshaler interface.

func (*RawMessage) UnmarshalEasyJSON

func (v *RawMessage) UnmarshalEasyJSON(l *jlexer.Lexer)

UnmarshalEasyJSON does JSON unmarshaling using easyjson interface.

func (*RawMessage) UnmarshalJSON

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

UnmarshalJSON implements encoding/json.Unmarshaler interface.

type UnknownFieldsProxy

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

UnknownFieldsProxy implemets UnknownsUnmarshaler and UnknownsMarshaler use it as embedded field in your structure to parse and then serialize unknown struct fields

func (UnknownFieldsProxy) MarshalUnknowns

func (s UnknownFieldsProxy) MarshalUnknowns(out *jwriter.Writer, first bool)

func (*UnknownFieldsProxy) UnmarshalUnknown

func (s *UnknownFieldsProxy) UnmarshalUnknown(in *jlexer.Lexer, key string)

type UnknownsMarshaler

type UnknownsMarshaler interface {
	MarshalUnknowns(w *jwriter.Writer, first bool)
}

UnknownsMarshaler provides a method to write additional struct fields

type UnknownsUnmarshaler

type UnknownsUnmarshaler interface {
	UnmarshalUnknown(in *jlexer.Lexer, key string)
}

UnknownsUnmarshaler provides a method to unmarshal unknown struct fileds and save them as you want

type Unmarshaler

type Unmarshaler interface {
	UnmarshalEasyJSON(w *jlexer.Lexer)
}

Marshaler is an easyjson-compatible unmarshaler interface.

Directories

Path Synopsis
benchmark module
Package bootstrap implements the bootstrapping logic: generation of a .go file to launch the actual generator and launching the generator itself.
Package bootstrap implements the bootstrapping logic: generation of a .go file to launch the actual generator and launching the generator itself.
Package buffer implements a buffer for serialization, consisting of a chain of []byte-s to reduce copying and to allow reuse of individual chunks.
Package buffer implements a buffer for serialization, consisting of a chain of []byte-s to reduce copying and to allow reuse of individual chunks.
Package jlexer contains a JSON lexer implementation.
Package jlexer contains a JSON lexer implementation.
Package jwriter contains a JSON writer.
Package jwriter contains a JSON writer.

Jump to

Keyboard shortcuts

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