A command-line JSON processor that uses a domain-specific language.
TL;DR
# Execute a specific expression (print a colored and formatted json):
$ cat path/to/file.json | jq '.'
# Execute a specific script:
$ cat path/to/file.json | jq --from-file path/to/script.jq
# Pass specific arguments:
$ cat path/to/file.json | jq --arg "name1" "value1" --arg "name2" "value2" ... '. + $ARGS.named'
# Print specific keys:
$ cat path/to/file.json | jq '.key1, .key2, ...'
# Print specific array items:
$ cat path/to/file.json | jq '.[index1], .[index2], ...'
# Print all array items/object keys:
$ cat path/to/file.json | jq '.[]'
# Add/remove specific keys:
$ cat path/to/file.json | jq '. +|- {"key1": "value1", "key2": "value2", ...}'
Usage
Install
# install on macOS
$ brew install jq
Simple Usage
$ echo '{"id": 100, "info": { "name": "James Zhan"}}' | jq
$ echo '{"id": 100, "info": { "name": "James Zhan"}}' | jq .
$ echo '{"id": 100, "info": { "name": "James Zhan"}}' | jq -r '.id'
$ echo '{"id": 100, "info": { "name": "James Zhan"}}' | jq -r '.info'
$ echo '{"id": 100, "info": { "name": "James Zhan"}}' | jq -r '.info.name'