Skip to content

Instantly share code, notes, and snippets.

@ixe013
Created April 11, 2024 04:06
Show Gist options
  • Save ixe013/6e72c59654afc6030e13e87b9203f383 to your computer and use it in GitHub Desktop.
Save ixe013/6e72c59654afc6030e13e87b9203f383 to your computer and use it in GitHub Desktop.
Python code to deep sort a JSON file
import argparse
import collections
import json
import sys
def sort_json(json_obj):
if isinstance(json_obj, dict):
sorted_dict = collections.OrderedDict()
for key in sorted(json_obj.keys()):
sorted_dict[key] = sort_json(json_obj[key])
return sorted_dict
elif isinstance(json_obj, list):
sorted_list = []
for item in json_obj:
sorted_list.append(sort_json(item))
return sorted(sorted_list)
else:
return json_obj
if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument('infile', nargs='?', type=argparse.FileType('r'), default=sys.stdin)
parser.add_argument('outfile', nargs='?', type=argparse.FileType('w'), default=sys.stdout)
parser.add_argument('--indent', default=4, type=int)
args = parser.parse_args()
if sys.stdin.isatty():
parser.print_help()
exit()
# Load JSON data
parsed_json = json.load(args.infile)
# Sort JSON data
sorted_json = sort_json(parsed_json)
# Print sorted JSON
print(json.dumps(sorted_json, indent=args.indent), file=args.outfile)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment