- 
                Notifications
    You must be signed in to change notification settings 
- Fork 437
Open
Description
The EachKey API does not work coherently to the Get one w.r.t array of strings.
Meaning that it does not work on paths like "request>headers>User-Agent>[0]", while Get does.
Here's a minimal reproducer:
package main
import (
	"fmt"
	"github.com/buger/jsonparser"
)
func main() {
	data := []byte(`{"request":{"headers":{"User-Agent":["abc"]}}}`)
	paths := [][]string{
		[]string{"request", "headers", "User-Agent", "[0]"},
	}
	jsonparser.EachKey(data, func(idx int, val []byte, typ jsonparser.ValueType, err error) {
		fmt.Printf("NO: val: %s / typ: %s / err: %s\n", val, typ, err)
	}, paths...)
	v, t, _, e := jsonparser.Get(data, paths[0]...)
	fmt.Printf("OK: val: %s / typ: %s / err: %s\n", v, t, e)
}As you can see in the output EachKey fails while Get doesn't:
NO: val:  / typ: unknown / err: Unknown value type
OK: val: abc / typ: string / err: %!s(<nil>)flowchartsman and cedecegreen
Metadata
Metadata
Assignees
Labels
No labels