Use OrderedDict to preserve order
diff --git a/.travis.yml b/.travis.yml
index 6a0aaa0..94b6262 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -6,7 +6,9 @@
     - TOXENV=py34
     - TOXENV=pypy
     - TOXENV=pypy3
-install: pip install coveralls tox
+install:
+    - if [[ $TOXENV == py26 ]]; then pip install ordereddict; fi
+    - pip install coveralls tox
 script: tox
 # Special snowflake.  Our tests depend on making real commits.
 before_install:
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')