A single JSONPath match is unwrapped unless the path selects many
Arity is read off the path, not off the result, so a query written to select many keeps a list shape even on the day it matches exactly one thing.
The rule
Normative: this is the rule
A JSONPath query that returns exactly one match yields that match rather than a one-element list, unless the path is written to select many, containing a wildcard, a filter or a slice, in which case the result stays a list even when only one item matched.
Rule identifiers are permanent and are never renumbered. Each implementation publishes its own standing against these rules; this specification does not.spec 1.0-draft · LANG-15 · changed in spec 1.0