MCPcopy
hub / github.com/protocolbuffers/protobuf-go / unmarshalList

Method unmarshalList

encoding/protojson/decode.go:513–564  ·  view source on GitHub ↗
(list protoreflect.List, fd protoreflect.FieldDescriptor)

Source from the content-addressed store, hash-verified

511}
512
513func (d decoder) unmarshalList(list protoreflect.List, fd protoreflect.FieldDescriptor) error {
514 tok, err := d.Read()
515 if err != nil {
516 return err
517 }
518 if tok.Kind() != json.ArrayOpen {
519 return d.unexpectedTokenError(tok)
520 }
521
522 switch fd.Kind() {
523 case protoreflect.MessageKind, protoreflect.GroupKind:
524 for {
525 tok, err := d.Peek()
526 if err != nil {
527 return err
528 }
529
530 if tok.Kind() == json.ArrayClose {
531 d.Read()
532 return nil
533 }
534
535 val := list.NewElement()
536 if err := d.unmarshalMessage(val.Message(), false); err != nil {
537 return err
538 }
539 list.Append(val)
540 }
541 default:
542 for {
543 tok, err := d.Peek()
544 if err != nil {
545 return err
546 }
547
548 if tok.Kind() == json.ArrayClose {
549 d.Read()
550 return nil
551 }
552
553 val, err := d.unmarshalScalar(fd)
554 if err != nil {
555 return err
556 }
557 if val.IsValid() {
558 list.Append(val)
559 }
560 }
561 }
562
563 return nil
564}
565
566func (d decoder) unmarshalMap(mmap protoreflect.Map, fd protoreflect.FieldDescriptor) error {
567 tok, err := d.Read()

Callers 2

unmarshalListValueMethod · 0.95
unmarshalMessageMethod · 0.95

Calls 10

unexpectedTokenErrorMethod · 0.95
unmarshalMessageMethod · 0.95
unmarshalScalarMethod · 0.95
KindMethod · 0.65
NewElementMethod · 0.65
MessageMethod · 0.65
AppendMethod · 0.65
IsValidMethod · 0.65
ReadMethod · 0.45
PeekMethod · 0.45

Tested by

no test coverage detected