3 ms·
What about JSONPath?
by ahoka 3y ago
What about JSONPath?
- mdaniel 3y agoIt may be fine for hello-world stuff, but how would one JSONPath this? echo '[{"name":"_skip"},{"name":"alpha"},{"name":"_other"}' | \ jq '[ .[] | select(.name|test("^_.*")|not) | . ]' The same is roughly true for JMESPath, also, although at least it does actually try to allow projections and some limited functions
- ahoka 3y agoI believe like this. $[?(@.name =~ /[^_].*/)]
- mdaniel 3y agoInteresting, I only knew about <https://goessner.net/articles/JsonPath/index.html https://goessner.net/articles/JsonPath/index.html> which makes no reference to =~ nor any such // syntax but it seems there's an IETF draft that is (a) an actual specification (b) includes more modern stuff like what you used: https://www.ietf.org/archive/id/draft-ietf-jsonpath-base-07.html#section-3.5.5.1-14 https://www.ietf.org/archive/id/draft-ietf-jsonpath-base-07.... And, while whatever is powering https://jsonpath.com/ https://jsonpath.com/ does honor your syntax, albeit with an absolutely useless result: [ { "name": -1 }, { "name": -1 }, { "name": -1 } ] I found that `pip install jsonpath-ng` does not accept it nor mention it <https://github.com/h2non/jsonpath-ng/tree/v1.5.3?tab=readme-ov-file#extensions https://github.com/h2non/jsonpath-ng/tree/v1.5.3?tab=readme-...> so I think it's out on the bleeding edge or something
- storoj 3y agoIs ".*" necessary? I think "^_" should be enough.
- hn92726819 3y agoI hadn't seen this before. At a quick glance, the syntax looks fine. Though I don't know what command line utility I'd need to use it. It makes me wonder how hard a translator from jq syntax to jsonpath would be... Then we could have our cake and eat it too.