json-tools
SKILL.md
JSON Tools Skill
JSON manipulation and processing tools.
When to Use
- Parse and validate JSON
- Extract data from JSON
- Transform JSON structure
- Pretty print or minify JSON
- Query JSON with jq
Validate JSON
Check if Valid JSON
# Using Python
python3 -c "import json, sys; json.load(sys.stdin)" < file.json
# Using jq
jq . file.json >/dev/null 2>&1 && echo "Valid" || echo "Invalid"
# Using node
node -e "JSON.parse(require('fs').readFileSync(0,'utf8'))" < file.json
Pretty Print
Format JSON
# Python pretty print
python3 -m json.tool data.json
# jq pretty print
cat data.json | jq .
# Node pretty print
node -e "console.log(JSON.stringify(JSON.parse(require('fs').readFileSync(0,'utf8')), null, 2))" < data.json
Minify JSON
# Minify (remove whitespace)
cat data.json | jq -c .
# Python minify
python3 -c "import json,sys; print(json.dumps(json.load(sys.stdin)))" < data.json
Extract Data
Get Keys
# Top-level keys
cat data.json | jq 'keys'
# Nested keys
cat data.json | jq '.user | keys'
Get Values
# Get specific field
cat data.json | jq '.name'
# Get nested field
cat data.json | jq '.user.address.city'
# Get array elements
cat data.json | jq '.items[0]'
# Get all array items
cat data.json | jq '.items[]'
Filter Arrays
# Filter by value
cat data.json | jq '.items[] | select(.price > 100)'
# Map to specific field
cat data.json | jq '.items[] | .name'
# Count items
cat data.json | jq '.items | length'
Transform JSON
Rename Keys
# Rename 'name' to 'title'
cat data.json | jq '. + {title: .name} | del(.name)'
Add/Remove Fields
# Add field
cat data.json | jq '. + {newField: "value"}'
# Remove field
cat data.json | jq 'del(.unwantedField)'
# Update field
cat data.json | jq '.count += 1'
Merge Objects
# Merge two objects
echo '{}' | jq -s '.[0] * .[1]' file1.json file2.json
Convert Formats
JSON to CSV
# Simple JSON array to CSV
cat data.json | jq -r '.[] | [.name, .email, .age] | @csv'
# With header
echo "name,email,age" > output.csv
cat data.json | jq -r '.[] | [.name, .email, .age] | @csv' >> output.csv
CSV to JSON
# Using Python
python3 -c "
import csv, json, sys
reader = csv.DictReader(sys.stdin)
print(json.dumps(list(reader), indent=2))
" < data.csv
# Using jq (if dealing with array)
cat data.json | jq -c '.[]' | csvjson -d
JSON to YAML
# Using Python
python3 -c "
import json, yaml, sys
print(yaml.dump(json.load(sys.stdin)))
" < data.json
# Using yq
cat data.json | yq -y .
Query Examples
API Response Parsing
# Get array of IDs
curl -s api.example.com/data | jq '.[].id'
# Filter by status
curl -s api.example.com/data | jq '.[] | select(.status == "active")'
# Group by field
curl -s api.example.com/data | jq 'group_by(.category)'
Complex Queries
# Multiple fields
cat data.json | jq '{name: .user.name, email: .user.email}'
# Conditional
cat data.json | jq 'if .active then "active" else "inactive" end'
# Default values
cat data.json | jq '.name // "Unknown"'
Useful jq Flags
| Flag | Description |
|---|---|
-r |
Raw output (no quotes) |
-c |
Compact output |
-M |
Monochrome |
-f |
Read filter from file |
-s |
Slurp (read all input) |
Examples
Count items:
cat data.json | jq '.items | length'
Extract unique values:
cat data.json | jq '[.items[].category] | unique'
Sum values:
cat data.json | jq '[.items[].price] | add'
Convert to lines:
cat data.json | jq -c '.items[]'
Weekly Installs
2
Repository
winsorllc/upgra…carnivalFirst Seen
Mar 1, 2026
Security Audits
Installed on
amp2
cline2
opencode2
cursor2
kimi-cli2
codex2