JSON and data guides
JSONPath array filters: select the records you need
Build a price filter, select fields, and distinguish missing paths from null values.
Start at the root
The dollar sign represents the document root. A wildcard selects all children; a named segment selects a property on each matching object.
Use a tiny array with two different prices before querying a production-shaped document. This makes a wrong nesting level visible.
{"items":[{"sku":"A","price":9},{"sku":"B","price":15}]}
$.items[*].sku → ["A","B"]Filter before projecting
A filter applies its predicate to each candidate. The at sign represents that candidate, so price is read from the current item.
The example selects only A. If the response wraps items under data, add that segment rather than changing the condition.
$.items[?(@.price < 10)].sku → ["A"]Separate missing and null
An absent property contributes no node to a selection. A property whose value is null exists and contributes a null value.
An empty result may mean a wrong path, no qualifying records, or missing properties. Inspect one candidate in the JSON tree to distinguish these cases.
Check the query dialect
RFC 9535 defines standard JSONPath. Libraries also offer extensions; Nav Tools uses JSONPath Plus, so an accepted expression is not automatically portable.
Keep the query and a passing fixture together. Test empty arrays, missing fields and nested arrays before moving it into a backend implementation.