easyjson: github.com/mailru/easyjson/jlexer Index | Files

package jlexer

import "github.com/mailru/easyjson/jlexer"

Package jlexer contains a JSON lexer implementation.

It is expected that it is mostly used with generated parser code, so the interface is tuned for a parser that knows what kind of data is expected.


Package Files

bytestostr.go error.go lexer.go

type Lexer Uses

type Lexer struct {
    Data []byte // Input data given to the lexer.

    UseMultipleErrors bool // If we want to use multiple errors.
    // contains filtered or unexported fields

Lexer is a JSON lexer: it iterates over JSON tokens in a byte slice.

func (*Lexer) AddError Uses

func (r *Lexer) AddError(e error)

func (*Lexer) AddNonFatalError Uses

func (r *Lexer) AddNonFatalError(e error)

func (*Lexer) Bool Uses

func (r *Lexer) Bool() bool

Bool reads a true or false boolean keyword.

func (*Lexer) Bytes Uses

func (r *Lexer) Bytes() []byte

Bytes reads a string literal and base64 decodes it into a byte slice.

func (*Lexer) Consumed Uses

func (r *Lexer) Consumed()

Consumed reads all remaining bytes from the input, publishing an error if there is anything but whitespace remaining.

func (*Lexer) Delim Uses

func (r *Lexer) Delim(c byte)

Delim consumes a token and verifies that it is the given delimiter.

func (*Lexer) Error Uses

func (r *Lexer) Error() error

func (*Lexer) FetchToken Uses

func (r *Lexer) FetchToken()

FetchToken scans the input for the next token.

func (*Lexer) Float32 Uses

func (r *Lexer) Float32() float32

func (*Lexer) Float32Str Uses

func (r *Lexer) Float32Str() float32

func (*Lexer) Float64 Uses

func (r *Lexer) Float64() float64

func (*Lexer) Float64Str Uses

func (r *Lexer) Float64Str() float64

func (*Lexer) GetNonFatalErrors Uses

func (r *Lexer) GetNonFatalErrors() []*LexerError

func (*Lexer) GetPos Uses

func (r *Lexer) GetPos() int

func (*Lexer) Int Uses

func (r *Lexer) Int() int

func (*Lexer) Int16 Uses

func (r *Lexer) Int16() int16

func (*Lexer) Int16Str Uses

func (r *Lexer) Int16Str() int16

func (*Lexer) Int32 Uses

func (r *Lexer) Int32() int32

func (*Lexer) Int32Str Uses

func (r *Lexer) Int32Str() int32

func (*Lexer) Int64 Uses

func (r *Lexer) Int64() int64

func (*Lexer) Int64Str Uses

func (r *Lexer) Int64Str() int64

func (*Lexer) Int8 Uses

func (r *Lexer) Int8() int8

func (*Lexer) Int8Str Uses

func (r *Lexer) Int8Str() int8

func (*Lexer) IntStr Uses

func (r *Lexer) IntStr() int

func (*Lexer) Interface Uses

func (r *Lexer) Interface() interface{}

Interface fetches an interface{} analogous to the 'encoding/json' package.

func (*Lexer) IsDelim Uses

func (r *Lexer) IsDelim(c byte) bool

IsDelim returns true if there was no scanning error and next token is the given delimiter.

func (*Lexer) IsNull Uses

func (r *Lexer) IsNull() bool

IsNull returns true if the next token is a null keyword.

func (*Lexer) IsStart Uses

func (r *Lexer) IsStart() bool

IsStart returns whether the lexer is positioned at the start of an input string.

func (*Lexer) JsonNumber Uses

func (r *Lexer) JsonNumber() json.Number

JsonNumber fetches and json.Number from 'encoding/json' package. Both int, float or string, contains them are valid values

func (*Lexer) Null Uses

func (r *Lexer) Null()

Null verifies that the next token is null and consumes it.

func (*Lexer) Ok Uses

func (r *Lexer) Ok() bool

Ok returns true if no error (including io.EOF) was encountered during scanning.

func (*Lexer) Raw Uses

func (r *Lexer) Raw() []byte

Raw fetches the next item recursively as a data slice

func (*Lexer) Skip Uses

func (r *Lexer) Skip()

Skip skips a single token.

func (*Lexer) SkipRecursive Uses

func (r *Lexer) SkipRecursive()

SkipRecursive skips next array or object completely, or just skips a single token if not an array/object.

Note: no syntax validation is performed on the skipped data.

func (*Lexer) String Uses

func (r *Lexer) String() string

String reads a string literal.

func (*Lexer) StringIntern Uses

func (r *Lexer) StringIntern() string

StringIntern reads a string literal, and performs string interning on it.

func (*Lexer) Uint Uses

func (r *Lexer) Uint() uint

func (*Lexer) Uint16 Uses

func (r *Lexer) Uint16() uint16

func (*Lexer) Uint16Str Uses

func (r *Lexer) Uint16Str() uint16

func (*Lexer) Uint32 Uses

func (r *Lexer) Uint32() uint32

func (*Lexer) Uint32Str Uses

func (r *Lexer) Uint32Str() uint32

func (*Lexer) Uint64 Uses

func (r *Lexer) Uint64() uint64

func (*Lexer) Uint64Str Uses

func (r *Lexer) Uint64Str() uint64

func (*Lexer) Uint8 Uses

func (r *Lexer) Uint8() uint8

func (*Lexer) Uint8Str Uses

func (r *Lexer) Uint8Str() uint8

func (*Lexer) UintStr Uses

func (r *Lexer) UintStr() uint

func (*Lexer) UintptrStr Uses

func (r *Lexer) UintptrStr() uintptr

func (*Lexer) UnsafeBytes Uses

func (r *Lexer) UnsafeBytes() []byte

UnsafeBytes returns the byte slice if the token is a string literal.

func (*Lexer) UnsafeFieldName Uses

func (r *Lexer) UnsafeFieldName(skipUnescape bool) string

UnsafeFieldName returns current member name string token

func (*Lexer) UnsafeString Uses

func (r *Lexer) UnsafeString() string

UnsafeString returns the string value if the token is a string literal.

Warning: returned string may point to the input buffer, so the string should not outlive the input buffer. Intended pattern of usage is as an argument to a switch statement.

func (*Lexer) WantColon Uses

func (r *Lexer) WantColon()

WantColon requires a colon to be present before fetching next token.

func (*Lexer) WantComma Uses

func (r *Lexer) WantComma()

WantComma requires a comma to be present before fetching next token.

type LexerError Uses

type LexerError struct {
    Reason string
    Offset int
    Data   string

LexerError implements the error interface and represents all possible errors that can be generated during parsing the JSON data.

func (*LexerError) Error Uses

func (l *LexerError) Error() string

Package jlexer imports 13 packages (graph) and is imported by 1277 packages. Updated 2020-10-08. Refresh now. Tools for package owners.