()
| 140 | } |
| 141 | |
| 142 | func (dec *Decoder) getString() (int, int, error) { |
| 143 | // extract key |
| 144 | var keyStart = dec.cursor |
| 145 | // var str *Builder |
| 146 | for dec.cursor < dec.length || dec.read() { |
| 147 | switch dec.data[dec.cursor] { |
| 148 | // string found |
| 149 | case '"': |
| 150 | dec.cursor = dec.cursor + 1 |
| 151 | return keyStart, dec.cursor, nil |
| 152 | // slash found |
| 153 | case '\\': |
| 154 | dec.cursor = dec.cursor + 1 |
| 155 | err := dec.parseEscapedString() |
| 156 | if err != nil { |
| 157 | return 0, 0, err |
| 158 | } |
| 159 | default: |
| 160 | dec.cursor = dec.cursor + 1 |
| 161 | continue |
| 162 | } |
| 163 | } |
| 164 | return 0, 0, dec.raiseInvalidJSONErr(dec.cursor) |
| 165 | } |
| 166 | |
| 167 | func (dec *Decoder) skipEscapedString() error { |
| 168 | start := dec.cursor |
no test coverage detected