I am considering making a JSON parsing and generating command line tool. Started with looking around a bit. Below is a list of existing JSON command line tools. Numbers are [GitHub stars] at the time of writing this post. (… contributed by …) means that this post was updated with the item.

jq [11126] – filter, extract, modify and output JSON or text using DSL

jid [4426] – “You can drill down JSON interactively by using filtering queries like jq.” (item contributed by /u/Tacticus)

gron [4103] – convert JSON or JSON lines (from file/stdin/url) to text (path=value) which can be processed with grep/sed/diff; the tool also supports converting back to JSON after such processing

jo [2209] – generate JSON based on command line arguments and stdin; can read data from files and place it as base64 encoded values

JSON.sh [1635] – written in shell/gawk; “traverses the JSON objects and prints out the path to the current object (as a JSON array) and then the object, without whitespace”

underscore-cli [1588] ‘THE “Swiss Army knife” tool for processing JSON data – can be used as a simple pretty-printer, or as a full-powered JavaScript command-line’. Added on 2019-09-30 following comment from @joeytwiddle.

jsawk [1239] – focused primarily on filtering and transforming a list (or an object). Update 2019-09-30: as @joeytwiddle suggested in comment, the project appears to be unmaintained and doesn’t work with recent Node.js versions. Latest commit and latest closed issue are from 2015.

json (by trentm) [1218] – “massaging JSON on your Unix command line”; JS-like syntax for extracting values; in-place file editing

rq [1007] – awk/sed-like tool for structured data; supports several formats, including JSON

TickTick [469] – use JSON syntax directly in bash; “This is just a fun hack”

jshon [309] – very CLI-ish way to extract, manipulate and output the data

jl [308] – “a tiny functional language for querying and manipulating JSON”; visually reminds Haskell

jsonpp [244] – JSON pretty printer (item contributed by /u/ferbass)

fx [227] – conveniently run your JS code to manipulate JSON.

RecordStream [224] – create, manipulate and output records; supports JSON; Perl-based so grep expressions for example are in Perl.

JSON.awk [186] – JSON.sh fork in awk; after fork the projects added different features.

jp [184] – “command line interface to JMESPath” (link contributed by Evgeny Zislis)

json-command [143] – conveniently manipulate JSON using JS.

jsonv.sh [130] – convert JSON to CSV; specify paths in JSON to

jgrep (aka “JSON-grep”) [78] – “Command line tool and API for parsing JSON documents” in Ruby (item contributed by /u/tophlammiepie)

jsed [48] – manipulate and extract data; somewhat similar to jsawk in mindset

jayin [10] “Piping with js at terminal”. Added on 2019-09-30 following comment from @joeytwiddle.

jsongrep [9] (by dsc) – extract data at given path using shell globs and output one per line

jc [2] – “jc is used to JSONify the output of many standard linux cli tools”. Added on 2019-10-29 following comment from Kelly Brazil.

jsongrep [0] (by terrycojones) – easily extract data at given path

Honorable mentions

python -m json.tool – the JSON Python module (mention contributed by Evgeny Zislis)

Update 2018-09-10:

I’ve added related post in which I argue that jq functionality belongs to a shell.

If you feel that some project is missing from the list, please let me know in comments below.