MCPcopy Create free account
hub / github.com/francoispqt/gojay / decodeEmbeddedJSON

Method decodeEmbeddedJSON

decode_embedded_json.go:7–68  ·  view source on GitHub ↗
(ej *EmbeddedJSON)

Source from the content-addressed store, hash-verified

5type EmbeddedJSON []byte
6
7func (dec *Decoder) decodeEmbeddedJSON(ej *EmbeddedJSON) error {
8 var err error
9 if ej == nil {
10 return InvalidUnmarshalError("Invalid nil pointer given")
11 }
12 var beginOfEmbeddedJSON int
13 for ; dec.cursor < dec.length || dec.read(); dec.cursor++ {
14 switch dec.data[dec.cursor] {
15 case ' ', '\n', '\t', '\r', ',':
16 continue
17 // is null
18 case 'n':
19 beginOfEmbeddedJSON = dec.cursor
20 dec.cursor++
21 err := dec.assertNull()
22 if err != nil {
23 return err
24 }
25 case 't':
26 beginOfEmbeddedJSON = dec.cursor
27 dec.cursor++
28 err := dec.assertTrue()
29 if err != nil {
30 return err
31 }
32 // is false
33 case 'f':
34 beginOfEmbeddedJSON = dec.cursor
35 dec.cursor++
36 err := dec.assertFalse()
37 if err != nil {
38 return err
39 }
40 // is an object
41 case '{':
42 beginOfEmbeddedJSON = dec.cursor
43 dec.cursor = dec.cursor + 1
44 dec.cursor, err = dec.skipObject()
45 // is string
46 case '"':
47 beginOfEmbeddedJSON = dec.cursor
48 dec.cursor = dec.cursor + 1
49 err = dec.skipString() // why no new dec.cursor in result?
50 // is array
51 case '[':
52 beginOfEmbeddedJSON = dec.cursor
53 dec.cursor = dec.cursor + 1
54 dec.cursor, err = dec.skipArray()
55 case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '-':
56 beginOfEmbeddedJSON = dec.cursor
57 dec.cursor, err = dec.skipNumber()
58 }
59 break
60 }
61 if err == nil {
62 if dec.cursor-1 >= beginOfEmbeddedJSON {
63 *ej = append(*ej, dec.data[beginOfEmbeddedJSON:dec.cursor]...)
64 }

Callers 4

decodeTimeMethod · 0.95
EmbeddedJSONMethod · 0.95
DecodeMethod · 0.95

Calls 9

readMethod · 0.95
assertNullMethod · 0.95
assertTrueMethod · 0.95
assertFalseMethod · 0.95
skipObjectMethod · 0.95
skipStringMethod · 0.95
skipArrayMethod · 0.95
skipNumberMethod · 0.95
InvalidUnmarshalErrorTypeAlias · 0.85

Tested by 1