jsonparser
jsonparser copied to clipboard
EachKey cannot extract from array of strings
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>)
this issue may be a duplicate of #180