MCPcopy Create free account
hub / github.com/bcicen/jstream / objectOrdered

Method objectOrdered

decoder.go:544–626  ·  view source on GitHub ↗

object (ordered) accept valid JSON array value

()

Source from the content-addressed store, hash-verified

542
543// object (ordered) accept valid JSON array value
544func (d *Decoder) objectOrdered() (KVS, error) {
545 d.depth++
546
547 var (
548 c byte
549 k string
550 v interface{}
551 t ValueType
552 err error
553 obj KVS
554 )
555
556 // skip allocating map if it will not be emitted
557 if d.depth > d.emitDepth {
558 obj = make(KVS, 0)
559 }
560
561 // if the object has no keys
562 if c = d.skipSpaces(); c == '}' {
563 goto out
564 }
565
566scan:
567 for {
568 offset := d.pos - 1
569
570 // read string key
571 if c != '"' {
572 err = d.mkError(ErrSyntax, "looking for beginning of object key string")
573 break
574 }
575 if k, err = d.string(); err != nil {
576 break
577 }
578
579 // read colon before value
580 if c = d.skipSpaces(); c != ':' {
581 err = d.mkError(ErrSyntax, "after object key")
582 break
583 }
584
585 // read value
586 d.skipSpaces()
587 if d.emitKV {
588 if v, t, err = d.any(); err != nil {
589 break
590 }
591 if d.willEmit() {
592 d.metaCh <- &MetaValue{
593 Offset: int(offset),
594 Length: int(d.pos - offset),
595 Depth: d.depth,
596 Value: KV{k, v},
597 ValueType: t,
598 }
599 }
600 } else {
601 if v, err = d.emitAny(); err != nil {

Callers 1

anyMethod · 0.95

Calls 6

skipSpacesMethod · 0.95
mkErrorMethod · 0.95
stringMethod · 0.95
anyMethod · 0.95
willEmitMethod · 0.95
emitAnyMethod · 0.95

Tested by

no test coverage detected