Run $..price in most online JSONPath testers and you get this:
[8.95, 12.99, 8.99, 22.99, 19.95]
Five numbers. Which one is the bicycle? You end up counting array indexes by hand.
I built a tester that shows where each result came from:
$.store.book[0].price 8.95
$.store.book[1].price 12.99
$.store.book[2].price 8.99
$.store.book[3].price 22.99
$.store.bicycle.price 19.95
Every path is copy-pasteable into your code.
Two more things it does differently
No type coercion. "10" sorts before "9" as a string, so a filter that quietly coerces your IDs works on test data and breaks at double digits. This one returns no match instead of a wrong one.
Bad expressions fail loudly. You get an error with a position, not an empty result you have to guess about.
It follows RFC 9535, runs in your browser, and has no dependencies.
Try it: formatstack.tech/tools/json-query
Want the parser bug that ate my whole day? It's in the full build notes.
Which JSONPath tool do you use, and has it ever returned the wrong match?
Top comments (0)