Source File
scanner.go
Belonging Package
github.com/valyala/fastjson
package fastjson
import (
)
// Scanner scans a series of JSON values. Values may be delimited by whitespace.
//
// Scanner may parse JSON lines ( http://jsonlines.org/ ).
//
// Scanner may be re-used for subsequent parsing.
//
// Scanner cannot be used from concurrent goroutines.
//
// Use Parser for parsing only a single JSON value.
type Scanner struct {
// b contains a working copy of json value passed to Init.
b []byte
// s points to the next JSON value to parse.
s string
// err contains the last error.
err error
// v contains the last parsed JSON value.
v *Value
// c is used for caching JSON values.
c cache
}
// Init initializes sc with the given s.
//
// s may contain multiple JSON values, which may be delimited by whitespace.
func ( *Scanner) ( string) {
.b = append(.b[:0], ...)
.s = b2s(.b)
.err = nil
.v = nil
}
// InitBytes initializes sc with the given b.
//
// b may contain multiple JSON values, which may be delimited by whitespace.
func ( *Scanner) ( []byte) {
.Init(b2s())
}
// Next parses the next JSON value from s passed to Init.
//
// Returns true on success. The parsed value is available via Value call.
//
// Returns false either on error or on the end of s.
// Call Error in order to determine the cause of the returned false.
func ( *Scanner) () bool {
if .err != nil {
return false
}
.s = skipWS(.s)
if len(.s) == 0 {
.err = errEOF
return false
}
.c.reset()
, , := parseValue(.s, &.c, 0)
if != nil {
.err =
return false
}
.s =
.v =
return true
}
// Error returns the last error.
func ( *Scanner) () error {
if .err == errEOF {
return nil
}
return .err
}
// Value returns the last parsed value.
//
// The value is valid until the Next call.
func ( *Scanner) () *Value {
return .v
}
var errEOF = errors.New("end of s")
The pages are generated with Golds v0.4.9. (GOOS=linux GOARCH=amd64)