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, first, join, last, matches, min, max, reverse, sum, sort, split, unique/uniq

Struct or Array of Structs functions

defaults, from_entries, group_by, key_contains, keys, map, max_by, merge, min_by, omit, pluck, sort_by, to_entries, values

Last updated

Was this helpful?