PaesslerAG / jsonpath

BSD 3-Clause "New" or "Revised" License
172 stars 37 forks source link

Single quotes are not supported #31

Open rob-chkk opened 2 years ago

rob-chkk commented 2 years ago

The JSONPath standard supports single-quotes for bracket notation (see here) but they fail with a syntax error:

m := map[string]interface{}{
  "field": map[string]interface{}{
    "sub-field": "hello",
  },
}
value, err := jsonpath.Get("$.field['sub-field']", m) 
// err is incorrectly set to `could not parse string: invalid syntax`

// the following case works correctly:
value, err := jsonpath.Get("$.field[\"sub-field\"]", m) 
// err is nil, value is "hello"

Instead I'd expect this to work correctly.

JanHoefelmeyer commented 1 year ago

This seems to be an issue of the Gval library, which is using the text/scanner go library, which does not use single quotes to indicate strings and as such throws an error. In go, single quotes indicate single characters only. As such, it's unlikely that text/scanner will be changed to accommodate this issue and should probably be solved in Gval.