json

    11.0.0 • Public • Published

    json is a fast CLI tool for working with JSON. It is a single-file node.js script with no external deps (other than node.js itself). A quick taste:

    $ echo '{"foo":"bar"}' | json
    {
      "foo": "bar"
    }
    
    $ echo '{"foo":"bar"}' | json foo
    bar
    
    $ echo '{"fred":{"age":42}}' | json fred.age    # '.' for property access
    42
    
    $ echo '{"age":10}' | json -e 'this.age++'
    {
      "age": 11
    }
    
    # `json -ga` (g == group, a == array) for streaming mode
    $ echo '{"latency":32,"req":"POST /widgets"}
    {"latency":10,"req":"GET /ping"}
    ' | json -gac 'this.latency > 10' req
    POST /widgets
    

    Features:

    • pretty-printing JSON
    • natural syntax (like JS code) for extracting particular values
    • get details on JSON syntax errors (handy for config files)
    • filter input JSON (see -e and -c options)
    • fast stream processing (see -ga)
    • JSON validation
    • in-place file editing

    See https://trentm.com/json for full docs and examples as a man page.

    Follow @trentmick for updates to json.

    Installation

    1. Get node.

    2. npm install -g json

      Note: This used to be called 'jsontool' in the npm registry, but as of version 8.0.0 it has taken over the 'json' name. See npm Package Name below.

    OR manually:

    1. Get the 'json' script and put it on your PATH somewhere (it is a single file with no external dependencies). For example:

       cd ~/bin
       curl -L https://github.com/trentm/json/raw/master/lib/json.js > json
       chmod 755 json
      

    You should now have "json" on your PATH:

    $ json --version
    json 9.0.0
    

    WARNING for Ubuntu/Debian users: There is a current bug in Debian stable such that "apt-get install nodejs" installed a nodejs binary instead of a node binary. You'll either need to create a symlink for node, change the json command's shebang line to "#!/usr/bin/env nodejs" or use chrislea's PPA as discussed on issue #56. You can also do "apt-get install nodejs-legacy" to install symlink for node with apt.

    Test suite

    make test
    

    You can also limit (somewhat) which tests are run with the TEST_ONLY envvar, e.g.:

    cd test && TEST_ONLY=executable nodeunit test.js
    

    I test against node 0.4 (less so now), 0.6, 0.8, and 0.10.

    License

    MIT (see the fine LICENSE.txt file).

    Module Usage

    Since v1.3.1 you can use "json" as a node.js module:

    var json = require('json');
    

    However, so far the module API isn't that useful and the CLI is the primary focus.

    npm Package Name

    Once upon a time, json was a different thing (see zpoley's json-command here), and this module was called jsontool in npm. As of version 8.0.0 of this module, npm install json means this tool.

    If you see documentation referring to jsontool, it is most likely referring to this module.

    Alternatives you might prefer

    Install

    npm i json

    DownloadsWeekly Downloads

    65,712

    Version

    11.0.0

    License

    none

    Unpacked Size

    125 kB

    Total Files

    8

    Last publish

    Collaborators

    • trentm