JSON Tools
A toolkit for working with JSON data using Python standard library only.
When to Use This Skill
Activate this skill when the user needs to:
-
Validate JSON syntax
-
Format/pretty-print JSON
-
Query JSON with path expressions
-
Compare two JSON files
-
Transform JSON data
Available Scripts
Always run scripts with --help first to see all available options.
Script Purpose
validate_json.py
Check if JSON is valid
format_json.py
Pretty-print or minify JSON
query_json.py
Extract data using path expressions
diff_json.py
Compare two JSON files
Decision Tree
Task → What do you need? │ ├─ Check if JSON is valid? │ └─ Use: validate_json.py <file> │ ├─ Format/beautify JSON? │ └─ Use: format_json.py <file> │ ├─ Extract specific data? │ └─ Use: query_json.py <file> <path> │ └─ Compare two JSON files? └─ Use: diff_json.py <file1> <file2>
Quick Examples
Validate JSON:
python scripts/validate_json.py data.json echo '{"key": "value"}' | python scripts/validate_json.py -
Format JSON:
python scripts/format_json.py data.json python scripts/format_json.py data.json --indent 4 python scripts/format_json.py data.json --minify
Query JSON:
python scripts/query_json.py data.json "users" python scripts/query_json.py data.json "users.0.name" python scripts/query_json.py data.json "config.database.host"
Compare JSON:
python scripts/diff_json.py old.json new.json python scripts/diff_json.py config1.json config2.json --keys-only
Path Expression Syntax
The query_json.py script uses dot-notation paths:
Path Description
key
Access object key
0 , 1 , 2
Access array index
key.subkey
Nested access
items.0.name
Mixed access
. or empty Root element
Examples
Given JSON:
{ "users": [ {"name": "Alice", "age": 30}, {"name": "Bob", "age": 25} ], "config": { "debug": true } }
Path Result
users
The users array
users.0
First user object
users.0.name
"Alice"
users.1.age
25
config.debug
true
Input Sources
All scripts accept input from:
-
File: script.py data.json
-
Stdin: echo '{}' | script.py -
-
String: script.py --string '{"key": "value"}'
Common Use Cases
-
Validate API response: validate_json.py response.json
-
Pretty-print minified JSON: format_json.py api_response.json
-
Extract config value: query_json.py config.json "database.host"
-
Find config differences: diff_json.py prod.json staging.json
Notes
-
All scripts use Python standard library only (no external dependencies)
-
Unicode is fully supported
-
Large files are handled efficiently
-
Exit codes: 0 = success, 1 = error/invalid, 2 = differences found (diff)