But what about all those hours I spent torturing myself learning jq
's filter syntax, and jmespath
?
At first I thought that it is like SQLite, but for JSON, not just "JQ-lite".
Speaking of JSON and queries, it is worth to mention DuckDB's JSON features. This allows you to use actual SQL to query JSON.
Here is example of a DuckDB analogue of $.orders[?(@.status.#equals('delivered'))][*].items
from JQLite documentation:
duckdb -c "from (from demo.json select unnest(orders)->>'status' as status, cast(unnest(orders)->'items' as json[]) as items) select unnest(items) as delivered_items where status='delivered'"
┌─────────────────────────────────────────────────┐
│ delivered_items │
│ json │
├─────────────────────────────────────────────────┤
│ {"productId":"p1","quantity":1,"price":1299.99} │
│ {"productId":"p2","quantity":2,"price":1599.99} │
└─────────────────────────────────────────────────┘
I've been using that for all my JSON extraction and processing needs. Let me automate a bunch of my builds for JS stuff for FoundryVTT https://gitlab.com/foundry-azzurite/pings/-/blob/master/build/build.sh
Thanks for sharing the project! JQLite is aimed to run in browsers and node, but will definitely take inspiration from "jq".
I just kinda wonder why when you're in a browser or node, you wouldn't just do
const json = {...};
json.friends.filter(f => f.age >= 18);
why learn another language when you already literally got the language to process JavaScript Object Notation right there.
100% agreed. It's just a learning/hobby project, to know more about parsers, and how languages work. Some of the features like Wildcard, Multiple key selection/omission comes handy, and might add more features like that.
Totally fair. Sounds fun :)
That's a great project! JQLite is mainly focused on query-style approach. Also it's a hobby project for learning parsers and stuff.
You might want to look into using some form of parameterized queries.
Thanks for your suggestion! It's definitely something I'll look into.
Programming
Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!
Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.
Hope you enjoy the instance!
Rules
Rules
- Follow the programming.dev instance rules
- Keep content related to programming in some way
- If you're posting long videos try to add in some form of tldr for those who don't want to watch videos
Wormhole
Follow the wormhole through a path of communities !webdev@programming.dev