• Stars
    star
    1,544
  • Rank 30,296 (Top 0.6 %)
  • Language
    JavaScript
  • License
    Other
  • Created almost 14 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A "json" command for massaging JSON on your Unix command line.

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

npm test   # or 'make test'

This is using node-tap, so you can use all its options, for example filtering which tests to run:

npm test -- -g stream

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

More Repositories

1

node-bunyan

a simple and fast JSON logging module for node.js services
JavaScript
7,175
star
2

python-markdown2

markdown2: A fast and complete implementation of Markdown in Python
Python
2,636
star
3

django-markdown-deux

A django app that provides Markdown-related template tags using the python-markdown2 library.
Python
287
star
4

node-dashdash

A light, featureful and explicit option parsing library for node.js.
JavaScript
176
star
5

node-ldapauth

**UNMAINTAINED.** Simple node.js module to authenticate against an LDAP server
Perl
126
star
6

jirash

CLI and (light) shell for Jira
JavaScript
79
star
7

cmdln

**UNMAINTAINED** a Python module for easily building good multi-command scripts
Python
49
star
8

node-cmdln

node.js helper lib for creating CLI tools with subcommands; think `git`, `svn`, `zfs`
JavaScript
31
star
9

googlecode2github

Helper scripts and docs for moving a project from Google Code project hosting to Github
Python
24
star
10

nodedoc

a fledgling `perldoc` for node.js
Python
18
star
11

python-jira-cli

(my fork of) the Python JIRA command line interface (to add some conveniences)
Python
17
star
12

node-bunyan-winston

demo showing how to use a winston logger with a bunyan-using library (e.g. restify)
JavaScript
17
star
13

node-ansidiff

a small node.js library for ANSI colored text diffs
JavaScript
17
star
14

eol

a command-line script and Python module for working with text file end-of-line (EOL) characters
Python
17
star
15

preprocess

Automatically exported from code.google.com/p/preprocess
Python
15
star
16

node-csvrow

parse a CSV row string (in node.js)
JavaScript
13
star
17

hello-json-logging

An introduction to restify + bunyan for JSON logging in node.js API services.
JavaScript
13
star
18

sources

a command-line script to help get/clone/checkout and update source repos
Python
13
star
19

molybdenum

A git repo browser (for when your git repos aren't on GitHub)
JavaScript
12
star
20

node-expiring-lru-cache

An expiring LRU cache object for node.js
JavaScript
12
star
21

go-tool

Automatically exported from code.google.com/p/go-tool
Python
10
star
22

which

A portal Python GNU which replacement
Python
9
star
23

cutarelease

A script to help cutting releases of your projects in a single step (following some conventions).
Python
8
star
24

dotfiles

Trent's dotfiles
Python
8
star
25

go-ecslog

`ecslog` CLI to pretty-print and filter log files in ecs-logging format
Go
7
star
26

minimalist-python-module

How small can a project be to support a single module Python project.
Python
7
star
27

ircgrep

a command-line tool for grepping through IRC channel logs
Python
6
star
28

mdocml

A mirror/fork of mdocml from <http://mdocml.bsd.lv/>. I'm adding an "html5" output mode.
C
4
star
29

node-kthxbai

Kill Those Huge eXtra (node_module) Bits Absentmindedly Installed
JavaScript
4
star
30

talk-bunyan-in-prod

Slides for a talk called "Bunyan logging in production at Joyent"
JavaScript
3
star
31

otellogsplay

/me playing with OTel logging
JavaScript
2
star
32

python-process

an obsolete Python module for process control (currently unmaintained)
Python
2
star
33

listadmin

Fork of Kjetil Torgrim Homme's "listadmin" script for processing Mailman admin db. I have some minor changes for my personal usage.
Perl
2
star
34

node-ruhroh

helper lib to create the Error classes for restify-based API services
JavaScript
2
star
35

node-tabula

a light function for printing a text table to stdout
JavaScript
2
star
36

testlib

A micro unittest suite harness for Python
Python
1
star
37

trentm.github.com

CSS
1
star
38

lambdock

an example Node.js AWS Lambda Docker container with Elastic APM instrumentation
Dockerfile
1
star
39

npm-registry-proxy

a simple and *limited* proxy for registry.npmjs.org for testing npm
JavaScript
1
star
40

template-node-package

Trent's template for node package (for use with https://help.github.com/en/articles/creating-a-repository-from-a-template)
Makefile
1
star