jq Command

JSON Query command for filtering data out of a JSON Object, file, or URL. jq is a query language built specifically for interacting with JSON type data. More information can be found at https://jmespath.org/ as well as an online version to test your query Pass or pipe the text to process or a filename

Using jq with a file

# basic.json
   "a": {
      "b": {
         "c": {
            "d": "value"
         }
      }
   },
   "dan": [1,2,3,4,5,6,7,8],
   "ban": "bar",
   "cat": "baz"
}
> jq "basic.json" "a"
=> "a": {
      "b": {
         "c": {
            "d": "value"
         }
      }
   }

Using jq with a URL

Using jq with inline json

Special Keys / Expressions

@ - Current Node (eg. current number/string/array/object) used to evaluate or check value

& - Expression (Function or Keyname) (eg. &to_number() or &keyname)

! - NOT Expression

&& - AND expression

|| - OR expression

{'ab':true} - Literal Expressions (this will be converted to json)

'foo' - Raw String Literals not evaluated (Single Quotes)

Available Functions

Generic Functions

length, reverse, type, not_null

Conversion Functions

to_list, to_array, to_string, to_number

String / Number Functions

abs, ceil, floor

Boolean Checks

ends_with, starts_with, contains

All functions can be used in other functions with the "&" operator.

A common example would be getting a person with the highest or lowest networth max_by(people, &abs(net_worth))

Array Functions

avg: ( ARR ) - convert array of number to average (ex. [1,2,3] -> 2)

first: ( ARR/STR ) - convenient method to get the first item

group_by: ( ARR ) - Splits a collection into sets

join: ( ARR, STR ) - concatenate an array of strings/numbers with a provided delimiter to a string

last: ( ARR/STR ) - convenient method to get the last item

matches: ( STR/ARR, searchTerm ) - regex match string

min: ( ARR ) - get the minimum string/number/dates of an array (ex. [1,2,3] -> 1)

max: ( ARR ) - get the maximum string/number/dates of an array (ex. [1,2,3] -> 3)

reverse: ( STR/ARR ) - returns a reversal of a string or array

sum: ( ARR ) - convert array of number to sum (ex. [1,2,3] -> 6)

sort: ( STR_ARR/NUM_ARR ) - sorts an array of strings/numbers/dates

split: ( ARR/STR, STR ) - splits strings into arrays

unique/uniq: ( ARR ) - remove duplicates

Struct or Array of Structs functions

defaults: ( OBJ/ARR, OBJ ) - sets default values if missing on 1 or more structs

key_contains ( OBJ, &KeyName ) - boolean check if struct contains key name

from_entries ( OBJ/ARR ) - converts a {type:orange} -> {key: type, value:orange}

keys: ( OBJ/ARR ) - returns an array of keys

max_by: ( ARR,Function/Key ) - same as min but targets a key inside the array and returns a single struct

merge: ( OBJ/ARR, ...) - Merges objects into one single object with overwrite

min_by: ( ARR,Function/Key ) - same as max but targets a key inside the array and returns a single struct

omit ( OBJ/ARR, STR/ARR ) - loops over 1+ struct and excludes keys provided to_pairs: ( OBJ/ARR )- converts a {type:orange} -> [[type, orange]]

pluck ( OBJ/ARR, STR/ARR ) - loops over 1+ struct and only includes keys provided

sort_by: ( ARR, Function/Key ) - same as sort but targets a key inside the array and returns the entire array

to_entries ( OBJ/ARR ) - converts a {type:orange} -> {key: type, value:orange}

values: ( OBJ/ARR ) - returns an array of values

map: ( Function/Key, ARR ) -

Was this helpful?