EachKey cannot extract from array of strings
leodido opened this issue · 1 comments
leodido commented
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>)
cedecegreen commented
this issue may be a duplicate of #180