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

Method findArrayValue

reader_parser.go:324–395  ·  view source on GitHub ↗

SYS-REQ-116

(keys []string, depth int)

Source from the content-addressed store, hash-verified

322
323// SYS-REQ-116
324func (rp *ReaderParser) findArrayValue(keys []string, depth int) (bool, []byte, error) {
325 wanted, ok := parseReaderArrayIndex(keys[depth])
326 if !ok {
327 if err := rp.skipValue(); err != nil {
328 return false, nil, err
329 }
330 return false, nil, nil
331 }
332
333 rp.pos++ // opening [
334 if err := rp.skipWhitespace(); err != nil {
335 if err == io.EOF {
336 return false, nil, MalformedArrayError
337 }
338 return false, nil, err
339 }
340 b, err := rp.peekByte(false)
341 if err != nil {
342 return false, nil, err
343 }
344 if b == ']' {
345 rp.pos++
346 return false, nil, nil
347 }
348
349 for index := 0; ; index++ {
350 if index == wanted {
351 found, raw, err := rp.findValue(keys, depth+1)
352 if err != nil || found {
353 return found, raw, err
354 }
355 } else {
356 if err := rp.skipValue(); err != nil {
357 return false, nil, err
358 }
359 }
360
361 if err := rp.skipWhitespace(); err != nil {
362 if err == io.EOF {
363 return false, nil, MalformedArrayError
364 }
365 return false, nil, err
366 }
367 b, err = rp.peekByte(false)
368 if err != nil {
369 return false, nil, err
370 }
371 switch b {
372 case ']':
373 rp.pos++
374 return false, nil, nil
375 case ',':
376 rp.pos++
377 default:
378 return false, nil, MalformedArrayError
379 }
380
381 if err := rp.skipWhitespace(); err != nil {

Callers 1

findValueMethod · 0.95

Calls 5

skipValueMethod · 0.95
skipWhitespaceMethod · 0.95
peekByteMethod · 0.95
findValueMethod · 0.95
parseReaderArrayIndexFunction · 0.85

Tested by

no test coverage detected