jq: JSON Query Tool
Extract specific fields from JSON files without reading entire contents into context.
When to Use
Use jq when:
- Need specific field(s) from JSON config
- File is large (>50 lines) and only need subset
- Querying nested structures
- Working with package.json, tsconfig.json, lock files, API responses
Just use Read when:
- File is small (<50 lines)
- Need to understand overall structure
- Making edits (need full context anyway)
Common Files
package.json- dependencies, scripts, versiontsconfig.json- compiler optionspackage-lock.json- locked versions*.jsonAPI responses.eslintrc.json,prettierrc.json- tool configs
Quick Reference
# Get specific field
jq -r '.version' package.json
jq -r '.name' package.json
# Get nested field
jq -r '.dependencies.react' package.json
jq -r '.compilerOptions.target' tsconfig.json
# Get all keys
jq -r '.scripts | keys[]' package.json
jq -r '.dependencies | keys[]' package.json
# Get multiple fields
jq '{name, version}' package.json
# Filter array
jq '.items[] | select(.active == true)' data.json
# Count items
jq '.dependencies | length' package.json
package.json Patterns
# Version
jq -r '.version' package.json
# All scripts
jq '.scripts' package.json
# Specific script
jq -r '.scripts.build' package.json
# All dependencies (names only)
jq -r '.dependencies | keys[]' package.json
# Dependency version
jq -r '.dependencies["lodash"]' package.json
# Dev dependencies
jq -r '.devDependencies | keys[]' package.json
tsconfig.json Patterns
# Target
jq -r '.compilerOptions.target' tsconfig.json
# All compiler options
jq '.compilerOptions' tsconfig.json
# Include paths
jq '.include' tsconfig.json
# Strict mode
jq -r '.compilerOptions.strict' tsconfig.json
API Response Patterns
# Get data array
jq '.data' response.json
# First item
jq '.data[0]' response.json
# Pluck field from all items
jq '.data[].name' response.json
# Filter by condition
jq '.data[] | select(.status == "active")' response.json
# Count results
jq '.data | length' response.json
Core Principle
Extract exactly what's needed in one command. Saves 80-95% context vs reading entire JSON files.
