finds.dev← search

// the find

tomnomnom/gron

★ 14,522 · Go · MIT · updated May 2025

Make JSON greppable!

gron flattens JSON into discrete `path = value` assignment lines so you can grep, sed, and diff JSON with standard Unix tools instead of learning a query language. It's for anyone who needs to poke around an unfamiliar or undocumented JSON API response without firing up jq.

Zero runtime dependencies and ships as a single static Go binary, so installation is a curl-and-chmod away. The `--ungron` reverse operation is the actual clever part — it round-trips grep'd/sed'd output back into valid JSON, which is what makes this more than a novelty flattener. Also genuinely useful for diffing two JSON blobs line-by-line, something `diff` can't do on raw JSON.

It's essentially a finished tool frozen in place — CHANGELOG and commit activity suggest very light maintenance, so don't expect new features or fast bug turnaround. No streaming-friendly output for huge JSON files beyond the `-s` flag for JSON-lines input; deeply nested or very large documents can produce output that's painful to `--ungron` back correctly if you've grep'd out array elements unevenly. It solves a narrower problem than jq and the README says so itself — once you actually know the JSON's shape, jq will outrun this every time.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →