(b []byte)
| 692 | } |
| 693 | |
| 694 | func (d decoder) parseValue(b []byte) ([]byte, []byte, Kind, error) { |
| 695 | if len(b) == 0 { |
| 696 | return nil, b, Undefined, syntaxError(b, "unexpected end of JSON input") |
| 697 | } |
| 698 | |
| 699 | var v []byte |
| 700 | var k Kind |
| 701 | var err error |
| 702 | |
| 703 | switch b[0] { |
| 704 | case '{': |
| 705 | v, b, k, err = d.parseObject(b) |
| 706 | case '[': |
| 707 | v, b, k, err = d.parseArray(b) |
| 708 | case '"': |
| 709 | v, b, k, err = d.parseString(b) |
| 710 | case 'n': |
| 711 | v, b, k, err = d.parseNull(b) |
| 712 | case 't': |
| 713 | v, b, k, err = d.parseTrue(b) |
| 714 | case 'f': |
| 715 | v, b, k, err = d.parseFalse(b) |
| 716 | case '-', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9': |
| 717 | v, b, k, err = d.parseNumber(b) |
| 718 | default: |
| 719 | err = syntaxError(b, "invalid character '%c' looking for beginning of value", b[0]) |
| 720 | } |
| 721 | |
| 722 | return v, b, k, err |
| 723 | } |
| 724 | |
| 725 | func hasNullPrefix(b []byte) bool { |
| 726 | return len(b) >= 4 && string(b[:4]) == "null" |
no test coverage detected