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')