15

Is it possible to find a property name that matches a regex pattern (or at least starts with) using JSON Path. In XPath I can use name() but I haven't been able to find the JSON Path equivalent.

Basically, I what to find all property names that start with x-. Something like $..x-*.

I'll be interested in using any javascript package that does this. Currently, I'm using JSONPath.

Richard Schneider
  • 34,944
  • 9
  • 57
  • 73

2 Answers2

10

From my googling this is not possible in standard json path. However, the jsonpath-plus package extends the specification with @path; and makes the following possible

$..[?(@path.includes("[\'x-"))]
$..*[?(@property === 'price' && @ !== 8.95)]

The above assumes you are using ES6.

Ohad Schneider
  • 36,600
  • 15
  • 168
  • 198
Richard Schneider
  • 34,944
  • 9
  • 57
  • 73
7

Useful to someone else
You can use regular expression using =~ left matches regular expression. For more in formation visit https://github.com/jayway/JsonPath

[?(@.name =~ /foo.*?/i)]
Dipak Prajapati
  • 486
  • 5
  • 13