MCPcopy Create free account
hub / github.com/buger/jsonparser / findObjectValue

Method findObjectValue

reader_parser.go:231–321  ·  view source on GitHub ↗

SYS-REQ-116

(keys []string, depth int)

Source from the content-addressed store, hash-verified

229
230// SYS-REQ-116
231func (rp *ReaderParser) findObjectValue(keys []string, depth int) (bool, []byte, error) {
232 rp.pos++ // opening {
233
234 if err := rp.skipWhitespace(); err != nil {
235 if err == io.EOF {
236 return false, nil, MalformedObjectError
237 }
238 return false, nil, err
239 }
240 b, err := rp.peekByte(false)
241 if err != nil {
242 return false, nil, err
243 }
244 if b == '}' {
245 rp.pos++
246 return false, nil, nil
247 }
248
249 for {
250 matches, err := rp.readObjectKey(keys[depth])
251 if err != nil {
252 return false, nil, err
253 }
254
255 if err := rp.skipWhitespace(); err != nil {
256 if err == io.EOF {
257 return false, nil, MalformedJsonError
258 }
259 return false, nil, err
260 }
261 b, err = rp.peekByte(false)
262 if err != nil {
263 return false, nil, err
264 }
265 if b != ':' {
266 return false, nil, MalformedJsonError
267 }
268 rp.pos++
269
270 if matches {
271 found, raw, err := rp.findValue(keys, depth+1)
272 if err != nil || found {
273 return found, raw, err
274 }
275 } else {
276 if err := rp.skipWhitespace(); err != nil {
277 if err == io.EOF {
278 return false, nil, MalformedJsonError
279 }
280 return false, nil, err
281 }
282 if err := rp.skipValue(); err != nil {
283 return false, nil, err
284 }
285 }
286
287 if err := rp.skipWhitespace(); err != nil {
288 if err == io.EOF {

Callers 1

findValueMethod · 0.95

Calls 5

skipWhitespaceMethod · 0.95
peekByteMethod · 0.95
readObjectKeyMethod · 0.95
findValueMethod · 0.95
skipValueMethod · 0.95

Tested by

no test coverage detected