package gojay
type EmbeddedJSON []byte
func (dec *Decoder ) decodeEmbeddedJSON (ej *EmbeddedJSON ) error {
var err error
if ej == nil {
return InvalidUnmarshalError ("Invalid nil pointer given" )
}
var beginOfEmbeddedJSON int
for ; dec .cursor < dec .length || dec .read (); dec .cursor ++ {
switch dec .data [dec .cursor ] {
case ' ' , '\n' , '\t' , '\r' , ',' :
continue
case 'n' :
beginOfEmbeddedJSON = dec .cursor
dec .cursor ++
err := dec .assertNull ()
if err != nil {
return err
}
case 't' :
beginOfEmbeddedJSON = dec .cursor
dec .cursor ++
err := dec .assertTrue ()
if err != nil {
return err
}
case 'f' :
beginOfEmbeddedJSON = dec .cursor
dec .cursor ++
err := dec .assertFalse ()
if err != nil {
return err
}
case '{' :
beginOfEmbeddedJSON = dec .cursor
dec .cursor = dec .cursor + 1
dec .cursor , err = dec .skipObject ()
case '"' :
beginOfEmbeddedJSON = dec .cursor
dec .cursor = dec .cursor + 1
err = dec .skipString ()
case '[' :
beginOfEmbeddedJSON = dec .cursor
dec .cursor = dec .cursor + 1
dec .cursor , err = dec .skipArray ()
case '0' , '1' , '2' , '3' , '4' , '5' , '6' , '7' , '8' , '9' , '-' :
beginOfEmbeddedJSON = dec .cursor
dec .cursor , err = dec .skipNumber ()
}
break
}
if err == nil {
if dec .cursor -1 >= beginOfEmbeddedJSON {
*ej = append (*ej , dec .data [beginOfEmbeddedJSON :dec .cursor ]...)
}
dec .called |= 1
}
return err
}
func (dec *Decoder ) AddEmbeddedJSON (v *EmbeddedJSON ) error {
return dec .EmbeddedJSON (v )
}
func (dec *Decoder ) EmbeddedJSON (v *EmbeddedJSON ) error {
err := dec .decodeEmbeddedJSON (v )
if err != nil {
return err
}
dec .called |= 1
return nil
}
The pages are generated with Golds v0.8.2 . (GOOS=linux GOARCH=amd64)
Golds is a Go 101 project developed by Tapir Liu .
PR and bug reports are welcome and can be submitted to the issue list .
Please follow @zigo_101 (reachable from the left QR code) to get the latest news of Golds .