19 ms·
Show HN: Jless, a command-line JSON viewer
Hey, Hacker News! Today I'm proud to release jless, a command-line JSON viewer.
jless provides a JSON viewing experience similar to what you see in a browser's network tab in the developer console, but from the comfort of your terminal, with a whole suite of vim-inspired key bindings to easily manipulate your view of the data and full-text regex search. I'm sure many of you have some piped together some combination of cat, jq and less before; hopefully jless can replace that usage (hence the name). It supports newline delimited JSON too, so it can handle any output from jq.
I built jless to solve a problem I kept facing while building plaintextsports.com [1][2]. For the live data I use a lot of public, but undocumented APIs, and I was constantly digging through giant JSON files to understand how the data was structured. I tried installing multiple Chrome extensions, but was dissatisfied with all of them. I piped files through jq into less a lot, and that was ok, but not great. The Preview pane in the Network tab of Chrome's dev tools was pretty useful, and I modeled a lot of jless's behavior and appearance off of that, but it didn't fit well into my tmux + vim dev environment, and I couldn't easily use it to inspect files on disk. I wanted that experience, but in my terminal (and with search support).
Once I had built a rudimentary version of jless a few months ago, I immediately started using it whenever I was debugging something, and my usage has only grown as I've added more basic functionality. I've finally added all the features I feel like it needs to be functional, useful, and reliable.
There's definitely more features I want to add: Windows support, some way to filter data with jq filters (a la fx [3]), yanking objects to the clipboard, being able to hide keys entirely, streaming data in, so you can peek at the start of gigantic file, maybe a way to extract a schema from a file (like [4]), plenty of low-hanging fruit for performance. Support for different hierarchical data formats (YAML, TOML, XML) could be cool someday. I'm sure many people will ask for editing support, but sadly that is not something I plan on adding anytime soon.
I also used this project as a chance to learn Rust (code style and design comments appreciated!), which I had only dabbled with before. For a command-line utility, this felt like an obvious choice: small binaries (~3mb), instant startup, and great performance without any effort (try searching for comma in a big file!).
I hope you find it useful!
[1]: https://plaintextsports.com https://plaintextsports.com, live sports scores in plain text, no ads, no tracking, no loading
[2]: https://news.ycombinator.com/item?id=26310314 https://news.ycombinator.com/item?id=26310314
[3]: https://news.ycombinator.com/item?id=29861043 https://news.ycombinator.com/item?id=29861043
[4]: https://quicktype.io/typescript https://quicktype.io/typescript
- rmetzler 5y agoOne tool I rely on when I need to understand the structure of JSON is gron. I haven’t tried jless yet, will definitely do, but if you’re looking for inspiration, the gron representation is really useful.
- pdimitar 5y agoEvery now and then you just randomly look at HN, stumble upon a tool, read the home page and just 20% in you are gasping "OMG HOW DID I LIVE WITHOUT THIS!". Yep, `jless` is exactly that kind of tool. Instant favourite, and love at first sight. Extremely good job, thanks a lot for the tool!
- cyrdax 5y agoive used this. its awesome!!
- graderjs 5y agoWelcome to HN. Sorry some nasty people in the community think you're a fake account. I don't think so. I think you're probably just lurking for many years.
- deleted 5y ago[deleted]
- alexmorse 5y agoThis is great, especially for when I'm trying to digest a big blob where I don't know exactly what the structure is already!
- mcmm 5y agoLove it! It's nice that you can pipe to jless the same way you would pipe to less. Super useful for navigating through kube resources, eg: kubectl get pod mypod-0 -n namespace0 -o json | jless
- andrewjluo 5y agoRelied on this a lot while working on a web scraping project! Crazy useful for quickly parsing long JSON responses.