Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/trentm/json
A "json" command for massaging JSON on your Unix command line.
https://github.com/trentm/json
Last synced: 27 days ago
JSON representation
A "json" command for massaging JSON on your Unix command line.
- Host: GitHub
- URL: https://github.com/trentm/json
- Owner: trentm
- License: other
- Created: 2011-02-11T00:35:08.000Z (almost 14 years ago)
- Default Branch: master
- Last Pushed: 2024-01-23T13:41:38.000Z (10 months ago)
- Last Synced: 2024-10-14T20:20:50.430Z (about 1 month ago)
- Language: JavaScript
- Homepage: https://trentm.com/json
- Size: 1.01 MB
- Stars: 1,558
- Watchers: 29
- Forks: 122
- Open Issues: 50
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGES.md
- License: LICENSE.txt
- Authors: AUTHORS
Awesome Lists containing this project
README
`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](https://github.com/joyent/node) 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 /widgetsFeatures:
- 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 editingSee for full docs and examples as a man page.
Follow @trentmick
for updates to json.# Installation
1. Get [node](https://nodejs.org).
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](#npm-package-name) below.***OR manually**:
2. 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 jsonYou 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](https://launchpad.net/~chris-lea/+archive/node.js/) as
discussed on [issue #56](https://github.com/trentm/json/issues/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](https://node-tap.org/docs/cli/),
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](https://github.com/zpoley/json-command)), 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
- jq:
- json:select:
- json-command:
- JSONPath: ,
- jsawk:
- jshon:
- json2:
- fx: