A
cd ..
Tools

Jq JSON Processor

Parse, filter, and transform JSON data with jq command-line tool.

2025-09-24
jq, json, data-processing

Pretty print JSON

cat data.json | jq '.'

Extract specific field

cat data.json | jq '.name'

Extract nested field

cat data.json | jq '.user.email'

Extract from array

cat data.json | jq '.[0]'

Map over array

cat data.json | jq '.[] | .name'

Filter array

Get users where age > 25:

cat users.json | jq '.[] | select(.age > 25)'

Get specific fields

cat data.json | jq '{name: .name, email: .email}'

Array length

cat data.json | jq '. | length'

Get keys

cat data.json | jq 'keys'

Sort array

cat data.json | jq 'sort_by(.age)'

Reverse array

cat data.json | jq 'reverse'

Group by field

cat data.json | jq 'group_by(.category)'

Unique values

cat data.json | jq '[.[].category] | unique'

Map and select

cat data.json | jq '[.[] | select(.active == true) | .name]'

Conditional logic

cat data.json | jq 'if .age >= 18 then "adult" else "minor" end'

API response parsing

curl -s https://api.example.com/users | jq '.[].email'

Filter by multiple conditions

cat data.json | jq '.[] | select(.age > 20 and .active == true)'

Convert to CSV

cat data.json | jq -r '.[] | [.name, .age, .email] | @csv'

Null handling

cat data.json | jq '.email // "no email"'

Merge objects

jq -s '.[0] * .[1]' file1.json file2.json

Count matches

cat data.json | jq '[.[] | select(.status == "active")] | length'

Raw output (no quotes)

cat data.json | jq -r '.name'

Compact output

cat data.json | jq -c '.'

Was this useful?

Share with your team

Browse More