List of JSON tools for command line

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
  • jsongrep [0] (by terrycojones) – easily extract data at given path

Honorable mentions

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.

11 thoughts on “List of JSON tools for command line

  1. I just wanted to drop a thank you for that showstruct tool for jq. I’m always have problems with syntax and that has been very helpful. This list should be as well!

    Like

  2. most likely it’s a misunderstanding. jtc (https://github.com/ldn-softdev/jtc) is a shell level cli tool, that takes input, validates, parses it, and let extract or manipulate resulting json – same thing that listed tools do. it just offers a novel way to select elements within the input json (via so called walk-path), but at the end, it’s still a tool to manipulate and transform input json at unix cli

    Like

  3. I can never get jq to do what I want, so I’m here looking for alternatives. Lots of interesting suggestions!

    I think you could remove jsawk. It is 5 years old and doesn’t compile for recent versions of Node.

    I have found underscore-cli somewhat useful: https://www.npmjs.com/package/underscore-cli

    And (not JSON-specific) jayin lets us run JavaScript against any text file, with LoDash to hand: https://www.npmjs.com/package/jayin

    Like

      • Hi Ilya,
        I wonder, why would not you include jtc (https://github.com/ldn-softdev/jtc) into your list of JSON tools? jtc is pretty much like jq (i.e. both are JSON processors), but has quite a few advantages over it:
        1. both run on a metal, but unlike jq (written in C), jtc is written in the idiomatic C++(14 and above), which makes it free of memory/resource leaks – STL guarantee.
        2. unlike jq, jtc support streaming seamlessly, which makes it effortless to utilize in between redirect (pipes).
        3. due to a built-in cache engine jtc is times faster than jq (quite noticeable on processing big JSONs).
        4. but the biggest advantage is that the same JSON queries are much more feasible to achieve with jtc (and it’s not my my opinion).

        Like

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s