JSONPath returns a nodelist, even for one match
RFC 9535 defines JSONPath as a query language over a JSON value modeled as a tree of nodes. A query begins at the root identifier `$` and applies segments that select children or descendants. The result is a nodelist, which may contain no nodes, one node, or several nodes in a defined order.
That result model is different from asking for one exact address. A wildcard such as `$.items[*].id` intentionally selects the id child from every array element that has one. Tool Swim shows both the selected values and their normalized paths so an empty result is distinguishable from a matched JSON null.