I'd long for such a tool with a better comprehensible query language.
I will try to bring it to the brenchmark, thanks for sharing
It is more verbose, like you get the size of something with array:size or map:size functions, so it is more readable
I am implementing it in Xidel 0.9.9+: http://www.videlibri.de/xidel.html
xmlstarlet supports XPath 1, but the W3C did not stop there. They made XPath 2 featuring variables, lists and regular expressions, XPath 3 featuring higher order function, and finally XPath 3.1 featuring JSON support.
For example,
echo '[{"a": 1}, {"a": 2, "b": 3}, {"c": 4}]' | xidel - -e '?*?a!(. * 100)'
will print 100 and 200.Or the same with a verbose syntax:
echo '[{"a": 1}, {"a": 2, "b": 3}, {"c": 4}]' | xidel - -e 'for $obj in array:flatten(.) return map:get($obj, "a") * 100' ~/xidel % time ./xidel - -e '?SitusAddress!(.)' < ~/parcels | wc
**** Processing: stdin:/// ****
29066 149317 903704
./xidel - -e '?SitusAddress!(.)' < ~/parcels 2.55s user 0.18s system 99% cpu 2.733 total
wc 0.01s user 0.00s system 0% cpu 2.733 total
~/xidel % time jq -r '.SitusAddress' < ~/parcels | wc
29066 149317 903704
jq -r '.SitusAddress' < ~/parcels 0.95s user 0.00s system 99% cpu 0.958 total
wc 0.00s user 0.01s system 1% cpu 0.957 totalecho '' | fzf --print-query --preview-window wrap --preview 'cat test.json | jql {q}'