Process JSON in the terminal with jq
Published on
Updated on
The jq
command is great for quickly viewing and manipulating JSON data. By default, the output is formatted is a human-readable way, and they provide an easy way to “filter” or access elements within the JSON data.
For example
echo "{\"firstName\": \"Brandon\", \"lastName\": \"Rozek\"}" | jq
Outputs
{
"firstName": "Brandon",
"lastName": "Rozek"
}
To see what’s in the field firstName
echo "{\"firstName\": \"Brandon\", \"lastName\": \"Rozek\"}" | jq .firstName
Other than quickly viewing JSON objects in the terminal. I have two other use cases for it.
1: Sanitizing Strings
echo $OUTPUT | jq -Rsa .
Flag | Description |
---|---|
-R |
Don´t parse the input as JSON. Instead, each line of text is passed to the filter as a string. |
-s |
Pass the entire input to the filter as a single long string |
-a |
Produce pure ASCII output with every non-ASCII character replaced with the equivalent escape sequence. |
2: Stringifying JSON
jq ".|tojson"
From the man pages
The
tojson
andfromjson
builtins dump values as JSON texts or parse JSON texts into values, respectively.