jmespath / jmespath/go-jmespath

json.Number format is not supported

Open
#27 2 comments 0 reactions 0 assignees View on GitHub
Dominant language
Go
Stars
621
Forks
101
PR merge metrics
No merged PRs in 30d

Description

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.

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.