Convert JSON to CSV with sane defaults. Built for locked-down enterprise desktops (no third-party deps).
- Bank-friendly: 100% Python standard library (argparse, json, csv, logging).
- Practical: Handles both dict-of-dicts and list-of-dicts JSON.
- Usable: Good CLI UX, helpful errors, stable field inference, optional
--fields.
python json_to_csv.py -h
usage: json_to_csv.py [-h] [--output OUTPUT] [--fields FIELDS]
[--encoding ENCODING] [--delimiter DELIMITER] [--verbose]
input_jsonpython json_to_csv.py data.jsonpython json_to_csv.py data.json -o result.csvpython json_to_csv.py data.json --fields id,name,rolepython json_to_csv.py data.json -vpython json_to_csv.py data.json --delimiter ";"{
"1": {"name": "Alice", "role": "Admin"},
"2": {"name": "Bob", "role": "User" }
}
# output
id,name,role
1,Alice,Admin
2,Bob,User[
{"id": "1", "name": "Alice", "role": "Admin"},
{"id": "2", "name": "Bob", "role": "User" }
]- output, -o Path to output CSV. Defaults to .csv.
- fields Comma-separated list of columns (order enforced). Extra JSON keys are ignored.
- encoding Text encoding (default: utf-8).
- delimiter CSV delimiter (default: ,).
- verbose, -v Verbose logging.
- INFO/DEBUG logs go to stdout/stderr depending on level. Use -v for debugging.
- Exit codes:
| Code | Meaning |
|---|---|
| 0 | Success |
| 1 | OS errors (file not found/permissions) |
| 2 | Data/usage errors (bad JSON, bad shape) |
| 99 | Unexpected exception |
- No third-party modules. Safe for restricted environments.
- Deterministic columns. If --fields is omitted, columns are inferred in a stable order.
- Windows-safe CSV. Uses newline='' to avoid blank lines.
- Performance: Loads JSON into memory. For very large JSON files, consider chunking upstream or NDJSON (future enhancement).
Force a specific column set (drops others silently):
python json_to_csv.py data.json --fields id,name,roleChange delimiter to semicolon (common in EU Excel):
python json_to_csv.py data.json --delimiter ";"Custom encoding:
python json_to_csv.py data.json --encoding cp1252- Pure read → transform → write. No network calls, no eval/exec.
- Predictable I/O and explicit error messages for auditability.
MIT