Use OrderedDict to preserve order
diff --git a/pre_commit_hooks/pretty_format_json.py b/pre_commit_hooks/pretty_format_json.py
index 1d601fa..ae6dfe8 100644
--- a/pre_commit_hooks/pretty_format_json.py
+++ b/pre_commit_hooks/pretty_format_json.py
@@ -3,13 +3,21 @@
import argparse
import sys
+# Versions older than Python 2.6 will need to install ordereddict,
+# but newer versions will import from the built-in collections module.
+try:
+ from collections import OrderedDict
+except ImportError:
+ from ordereddict import OrderedDict
+
import simplejson
-def _get_pretty_format(contents, indent, no_sort_keys):
+def _get_pretty_format(contents, indent, sort_keys=True):
return simplejson.dumps(
- simplejson.loads(contents),
- sort_keys=no_sort_keys,
+ simplejson.loads(contents,
+ object_pairs_hook=None if sort_keys else OrderedDict),
+ sort_keys=sort_keys,
indent=indent
) + "\n" # dumps don't end with a newline
@@ -39,7 +47,7 @@
action='store_true',
dest='no_sort_keys',
default=False,
- help='Do not sort the keys'
+ help='Keep JSON nodes in the same order'
)
parser.add_argument('filenames', nargs='*', help='Filenames to fix')