diff --git a/pre_commit_hooks/pretty_format_json.py b/pre_commit_hooks/pretty_format_json.py
index bb7a3d0..9115077 100644
--- a/pre_commit_hooks/pretty_format_json.py
+++ b/pre_commit_hooks/pretty_format_json.py
@@ -2,11 +2,11 @@
 
 import argparse
 import io
+import json
 import sys
 from collections import OrderedDict
 
-import simplejson
-import six
+from six import text_type
 
 
 def _get_pretty_format(contents, indent, ensure_ascii=True, sort_keys=True, top_keys=[]):
@@ -17,18 +17,18 @@
         if sort_keys:
             after = sorted(after, key=lambda x: x[0])
         return OrderedDict(before + after)
-    return six.text_type(simplejson.dumps(
-        simplejson.loads(
-            contents,
-            object_pairs_hook=pairs_first,
-        ),
+    json_pretty = json.dumps(
+        json.loads(contents, object_pairs_hook=pairs_first),
         indent=indent,
         ensure_ascii=ensure_ascii,
-    )) + "\n"  # dumps does not end with a newline
+        separators=(',', ': '),  # Workaround for https://bugs.python.org/issue16333
+    )
+    # Ensure unicode (Py2) and add the newline that dumps does not end with.
+    return text_type(json_pretty) + '\n'
 
 
 def _autofix(filename, new_contents):
-    print("Fixing file {}".format(filename))
+    print('Fixing file {}'.format(filename))
     with io.open(filename, 'w', encoding='UTF-8') as f:
         f.write(new_contents)
 
@@ -110,16 +110,15 @@
             )
 
             if contents != pretty_contents:
-                print("File {} is not pretty-formatted".format(json_file))
+                print('File {} is not pretty-formatted'.format(json_file))
 
                 if args.autofix:
                     _autofix(json_file, pretty_contents)
 
                 status = 1
-
-        except simplejson.JSONDecodeError:
+        except ValueError:
             print(
-                "Input File {} is not a valid JSON, consider using check-json"
+                'Input File {} is not a valid JSON, consider using check-json'
                 .format(json_file),
             )
             return 1
diff --git a/setup.py b/setup.py
index ce8de14..ad14930 100644
--- a/setup.py
+++ b/setup.py
@@ -28,8 +28,6 @@
         'flake8!=2.5.3',
         'autopep8>=1.3',
         'pyyaml',
-        'simplejson',
-        'six',
     ],
     entry_points={
         'console_scripts': [
diff --git a/tests/pretty_format_json_test.py b/tests/pretty_format_json_test.py
index eeef65b..4054b4c 100644
--- a/tests/pretty_format_json_test.py
+++ b/tests/pretty_format_json_test.py
@@ -1,6 +1,7 @@
 import shutil
 
 import pytest
+from six import PY2
 
 from pre_commit_hooks.pretty_format_json import parse_indent
 from pre_commit_hooks.pretty_format_json import pretty_format_json
@@ -17,6 +18,7 @@
         parse_indent('-2')
 
 
+
 @pytest.mark.parametrize(
     ('filename', 'expected_retval'), (
         ('not_pretty_formatted_json.json', 1),
@@ -43,6 +45,7 @@
     assert ret == expected_retval
 
 
+@pytest.mark.skipif(PY2, reason="Requires Python3")
 @pytest.mark.parametrize(
     ('filename', 'expected_retval'), (
         ('not_pretty_formatted_json.json', 1),
@@ -52,7 +55,7 @@
         ('tab_pretty_formatted_json.json', 0),
     ),
 )
-def test_tab_pretty_format_json(filename, expected_retval):
+def test_tab_pretty_format_json(filename, expected_retval):  # pragma: no cover
     ret = pretty_format_json(['--indent', '\t', get_resource_path(filename)])
     assert ret == expected_retval
 
