diff options
author | Berker Peksag <berker.peksag@gmail.com> | 2014-11-10 09:56:54 +0200 |
---|---|---|
committer | Berker Peksag <berker.peksag@gmail.com> | 2014-11-10 09:56:54 +0200 |
commit | 8ad747c8d4a32ebbc735ddc686f547c2b3709035 (patch) | |
tree | a6c748eade2b35a93847bd2e28e0699512c7736c /Lib/json | |
parent | e0cded9da22fb03e554b2c5e5d00f8863d9444a7 (diff) | |
download | cpython-8ad747c8d4a32ebbc735ddc686f547c2b3709035.tar.gz |
Issue #21650: Add an `--sort-keys` option to json.tool CLI.
Diffstat (limited to 'Lib/json')
-rw-r--r-- | Lib/json/tool.py | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/Lib/json/tool.py b/Lib/json/tool.py index cd57e4f5ae..4f3182c0c1 100644 --- a/Lib/json/tool.py +++ b/Lib/json/tool.py @@ -11,6 +11,7 @@ Usage:: """ import argparse +import collections import json import sys @@ -24,17 +25,24 @@ def main(): help='a JSON file to be validated or pretty-printed') parser.add_argument('outfile', nargs='?', type=argparse.FileType('w'), help='write the output of infile to outfile') + parser.add_argument('--sort-keys', action='store_true', default=False, + help='sort the output of dictionaries alphabetically by key') options = parser.parse_args() infile = options.infile or sys.stdin outfile = options.outfile or sys.stdout + sort_keys = options.sort_keys with infile: try: - obj = json.load(infile) + if sort_keys: + obj = json.load(infile) + else: + obj = json.load(infile, + object_pairs_hook=collections.OrderedDict) except ValueError as e: raise SystemExit(e) with outfile: - json.dump(obj, outfile, sort_keys=True, indent=4) + json.dump(obj, outfile, sort_keys=sort_keys, indent=4) outfile.write('\n') |