Back in 60s card images were the canonical format for data. Unix inherited that and tools like, sed, awk, and even perl all have carry forward that legacy, though they call ’em lines.
There have been many attempts to get something more meaty to pump thru our pipe fittings. For example: Erlang’s got something, Lisp’s got something, XML, Protocol buffers, JSON, and many many others. JSON is quite popular this morning.
JMESPath is analogous to XML’s XPaths, but for JSON. I first encountered JMESPath in the AWS CLI tool’s –query arguments. But it is totally a stand alone thing. There are implementations in many popular languages and the licenses are quite generous. I like using it to pluck data out of API end-points.
One aspect of network effects is that when you capture one your rewards (or possibly your curse) is an immovable installed base. JSON (and XML) have succeeded where better schemes designed in the past have failed is because they both now have an installed base, i.e. the vast number of HTTP based API end-points. Getting those to switch to something better would be a PIA. Worse is better and all that.
While JMESPath is targeted at JSON, you can often use it to dig data out of the native data structures in what ever language you’re using today.
It was a nerd prank when I was a freshman in college to blow large quantities punch card chad under another’s dorm room door.
Like any good DSL JMESPath take a bit of getting used to. The interactive tutorial is sweet.