You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

39 lines
849 B

package jx
import "github.com/go-faster/errors"
// Raw is like Skip(), but saves and returns skipped value as raw json.
//
// Do not retain returned value, it references underlying buffer.
func (d *Decoder) Raw() (Raw, error) {
if d.reader != nil {
return nil, errors.New("not implemented for io.Reader")
}
start := d.head
if err := d.Skip(); err != nil {
return nil, errors.Wrap(err, "skip")
}
return d.buf[start:d.head], nil
}
// RawAppend is Raw that appends saved raw json value to buf.
func (d *Decoder) RawAppend(buf Raw) (Raw, error) {
raw, err := d.Raw()
if err != nil {
return nil, err
}
return append(buf, raw...), err
}
// Raw json value.
type Raw []byte
// Type of Raw json value.
func (r Raw) Type() Type {
d := Decoder{buf: r, tail: len(r)}
return d.Next()
}
func (r Raw) String() string { return string(r) }