Reputation: 35477
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.
Upvotes: 18
Views: 18838
Reputation: 35477
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.
Upvotes: 10
Reputation: 528
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)]
Upvotes: 9