go-jmespath icon indicating copy to clipboard operation
go-jmespath copied to clipboard

json.Number format is not supported

Open shashankmehra opened this issue 7 years ago • 2 comments

If json is Unmarshaled using json.Number format like:

my_map := make(map[string]interface{})
d := json.NewDecoder(strings.NewReader(json_raw))
d.UseNumber()
d.Decode(&my_map)

And then used to search:

var expr1 = jmespath.MustCompile("people[?age > `20`].[name, age]")
result, err := expr1.Search(my_map)

err is nil but the result is [] even though some objects must be returned. Removing the d.UseNumber() makes the Search work properly.

This is probably because this type assertion fails to recognize the value in the map as a Number (float): https://github.com/jmespath/go-jmespath/blob/master/interpreter.go#L48

json.Number is essentially a string. So either reflect/conversion library can be used here or type assertion should handle json.Number.

shashankmehra avatar Mar 27 '17 13:03 shashankmehra

Looks to me a reasonable request.

suntong avatar Jun 02 '18 02:06 suntong

same as above

liov avatar Mar 06 '19 04:03 liov