craigcitro / jss

JSON processing command line tool based on JSONSelect (CSS-like selectors for JSON)

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Build Status

jss

jss is a JSON processing command line tool (like jq).

Unlike jq, its selection language is JSONSelect, which is based on CSS selectors. No need to learn an ad-hoc language for processing your JSON files. Just use one you already know! Your time with jss won't be wasted—it will make you better at writing CSS selectors.

Usage

Install:

$ pip install jss

Sample JSON file for demos:

$ cat file.json
{
  "foo": [
    "bar",
    {
      "baz": "quux"
    }
  ],
  "wut": {
    "name": "foo",
    "metadata": {
      "owner": "danvk",
      "blah": "whatever"
    }
  },
  "name": "dan"
}

Pull out all values with key "name", from anywhere in the JSON.

$ jss .name file.json
"foo"
"dan"

Remove fields named "metadata", wherever they occur (JSON→JSON transform):

$ jss -v .metadata file.json
{
  "foo": [
    "bar",
    {
      "baz": "quux"
    }
  ],
  "wut": {
    "name": "foo"
  },
  "name": "dan"
}

Keep only fields named "name", plus their ancestors (JSON→JSON transform):

$ jss -k .name file.json
{
  "wut": {
    "name": "foo"
  },
  "name": "dan"
}

Keep only top-level entries with "whatever" in some value underneath them (JSON→JSON transform using jQuery-style selectors):

$ jss -k ':root>*:has(:contains("whatever"))' file.json
{
  "wut": {
    "name": "foo",
    "metadata": {
      "owner": "danvk",
      "blah": "whatever"
    }
  }
}

About

JSON processing command line tool based on JSONSelect (CSS-like selectors for JSON)

License:Apache License 2.0


Languages

Language:Python 100.0%