MCPcopy Index your code
hub / github.com/segmentio/encoding / decodeMapStringRawMessage

Method decodeMapStringRawMessage

json/decode.go:810–889  ·  view source on GitHub ↗
(b []byte, p unsafe.Pointer)

Source from the content-addressed store, hash-verified

808}
809
810func (d decoder) decodeMapStringRawMessage(b []byte, p unsafe.Pointer) ([]byte, error) {
811 if hasNullPrefix(b) {
812 *(*unsafe.Pointer)(p) = nil
813 return b[4:], nil
814 }
815
816 if len(b) < 2 || b[0] != '{' {
817 return d.inputError(b, mapStringRawMessageType)
818 }
819
820 i := 0
821 m := *(*map[string]RawMessage)(p)
822
823 if m == nil {
824 m = make(map[string]RawMessage, 64)
825 }
826
827 var err error
828 var key string
829 var val RawMessage
830 input := b
831
832 b = b[1:]
833 for {
834 key = ""
835 val = nil
836
837 b = skipSpaces(b)
838
839 if len(b) != 0 && b[0] == '}' {
840 *(*unsafe.Pointer)(p) = *(*unsafe.Pointer)(unsafe.Pointer(&m))
841 return b[1:], nil
842 }
843
844 if i != 0 {
845 if len(b) == 0 {
846 return b, syntaxError(b, "unexpected end of JSON input after object field value")
847 }
848 if b[0] != ',' {
849 return b, syntaxError(b, "expected ',' after object field value but found '%c'", b[0])
850 }
851 b = skipSpaces(b[1:])
852 }
853
854 if hasNullPrefix(b) {
855 return b, syntaxError(b, "cannot decode object key string from 'null' value")
856 }
857
858 b, err = d.decodeString(b, unsafe.Pointer(&key))
859 if err != nil {
860 return objectKeyError(b, err)
861 }
862 b = skipSpaces(b)
863
864 if len(b) == 0 {
865 return b, syntaxError(b, "unexpected end of JSON input after object field key")
866 }
867 if b[0] != ':' {

Callers

nothing calls this directly

Calls 10

inputErrorMethod · 0.95
decodeStringMethod · 0.95
decodeRawMessageMethod · 0.95
parseValueMethod · 0.95
prependFieldMethod · 0.95
hasNullPrefixFunction · 0.85
skipSpacesFunction · 0.85
syntaxErrorFunction · 0.85
objectKeyErrorFunction · 0.85
StringMethod · 0.65

Tested by

no test coverage detected