MCPcopy
hub / github.com/tidwall/gjson / arrayOrMap

Method arrayOrMap

gjson.go:343–463  ·  view source on GitHub ↗
(vc byte, valueize bool)

Source from the content-addressed store, hash-verified

341}
342
343func (t Result) arrayOrMap(vc byte, valueize bool) (r arrayOrMapResult) {
344 var json = t.Raw
345 var i int
346 var value Result
347 var count int
348 var key Result
349 if vc == 0 {
350 for ; i < len(json); i++ {
351 if json[i] == '{' || json[i] == '[' {
352 r.vc = json[i]
353 i++
354 break
355 }
356 if json[i] > ' ' {
357 goto end
358 }
359 }
360 } else {
361 for ; i < len(json); i++ {
362 if json[i] == vc {
363 i++
364 break
365 }
366 if json[i] > ' ' {
367 goto end
368 }
369 }
370 r.vc = vc
371 }
372 if r.vc == '{' {
373 if valueize {
374 r.oi = make(map[string]interface{})
375 } else {
376 r.o = make(map[string]Result)
377 }
378 } else {
379 if valueize {
380 r.ai = make([]interface{}, 0)
381 } else {
382 r.a = make([]Result, 0)
383 }
384 }
385 for ; i < len(json); i++ {
386 if json[i] <= ' ' {
387 continue
388 }
389 // get next value
390 if json[i] == ']' || json[i] == '}' {
391 break
392 }
393 switch json[i] {
394 default:
395 if (json[i] >= '0' && json[i] <= '9') || json[i] == '-' {
396 value.Type = Number
397 value.Raw, value.Num = tonum(json[i:])
398 value.Str = ""
399 } else {
400 continue

Callers 3

ArrayMethod · 0.95
MapMethod · 0.95
ValueMethod · 0.95

Calls 5

ValueMethod · 0.95
tonumFunction · 0.85
squashFunction · 0.85
tolitFunction · 0.85
tostrFunction · 0.85

Tested by

no test coverage detected