Skip to content

iamthemovie/gron

 
 

Repository files navigation

Gron

Build Status

Make JSON greppable!

Gron transforms JSON into discrete assignments to make it easier to grep for what you want and see the absolute 'path' to it. It eases the exploration of APIs that return large blobs of JSON but have terrible documentation.

Usage

Get JSON from a file:

▶ gron testdata/two.json 
json = {};
json.contact = {};
json.contact.email = "[email protected]";
json.contact.twitter = "@TomNomNom";
json.github = "https://github.com/tomnomnom/";
json.likes = [];
json.likes[0] = "code";
json.likes[1] = "cheese";
json.likes[2] = "meat";
json.name = "Tom";

From a URL:

▶ gron http://headers.jsontest.com/
json = {};
json.Host = "headers.jsontest.com";
json["User-Agent"] = "Go-http-client/1.1";
json["X-Cloud-Trace-Context"] = "6917a823919477919dbc1523584ba25d/11970839830843610056";

Or from stdin:

▶ curl -s http://headers.jsontest.com/ | gron
json = {};
json.Accept = "*/*";
json.Host = "headers.jsontest.com";
json["User-Agent"] = "curl/7.43.0";
json["X-Cloud-Trace-Context"] = "c70f7bf26661c67d0b9f2cde6f295319/13941186890243645147";

Grep for something and easily see the path to it:

▶ gron testdata/two.json | grep twitter
json.contact.twitter = "@TomNomNom";

The output of gron is valid JavaScript:

▶ gron testdata/two.json > tmp.js
▶ echo "console.log(json);" >> tmp.js
▶ nodejs tmp.js
{ contact: { email: '[email protected]', twitter: '@TomNomNom' },
  github: 'https://github.com/tomnomnom/',
  likes: [ 'code', 'cheese', 'meat' ],
  name: 'Tom' }

Get help:

▶ gron --help
Transform JSON (from a file, URL, or stdin) into discrete assignments to make it greppable

Usage:
  gron [file|url]

Exit Codes:
  0	OK
  1	Failed to open file
  2	Failed to read input
  3	Failed to decode JSON
  4	Failed to from statements
  5	Failed to fetch URL

Examples:
  gron /tmp/apiresponse.json
  gron http://headers.jsontest.com/ 
  curl -s http://headers.jsontest.com/ | gron

Installation

If you're a Go user you can just use go get:

▶ go get github.com/tomnomnom/gron

Or you can download a binary from the releases page.

About

Make JSON greppable

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go 72.1%
  • PHP 19.0%
  • Shell 8.9%