diff --git a/pre_commit_hooks/pretty_format_json.py b/pre_commit_hooks/pretty_format_json.py
index 475bf1c..2e04064 100644
--- a/pre_commit_hooks/pretty_format_json.py
+++ b/pre_commit_hooks/pretty_format_json.py
@@ -1,10 +1,10 @@
 from __future__ import print_function
 
 import argparse
+import difflib
 import io
 import json
 import sys
-import difflib
 from collections import OrderedDict
 from typing import List
 from typing import Mapping
@@ -56,7 +56,7 @@
     return s.split(',')
 
 
-def get_diff(source, target):
+def get_diff(source, target):  # type: (List[str], List[str]) -> str
     source_lines = ''.join(source).split('\n')
     target_lines = ''.join(target).split('\n')
     d = difflib.Differ()
@@ -132,7 +132,7 @@
                 print('File {} is not pretty-formatted'.format(json_file))
 
                 if args.show_expected:
-                    print(get_diff(contents, pretty_contents))
+                    print(get_diff(contents, list(pretty_contents)))
 
                 if args.autofix:
                     _autofix(json_file, pretty_contents)
diff --git a/tests/pretty_format_json_test.py b/tests/pretty_format_json_test.py
index 3b7b9a2..bd84431 100644
--- a/tests/pretty_format_json_test.py
+++ b/tests/pretty_format_json_test.py
@@ -3,6 +3,7 @@
 import pytest
 from six import PY2
 
+from pre_commit_hooks.pretty_format_json import get_diff
 from pre_commit_hooks.pretty_format_json import main
 from pre_commit_hooks.pretty_format_json import parse_num_to_int
 from testing.util import get_resource_path
@@ -105,3 +106,78 @@
 def test_badfile_main():
     ret = main([get_resource_path('ok_yaml.yaml')])
     assert ret == 1
+
+
+def test_diffing_output():
+    table_tests = [
+        {
+            'name': 'diff_test_1',
+            'source': """
+{
+    "key1": "val1",
+    "key2":   2,
+"array_key": [1, 2, 3],
+        "object":{
+        "bool_key": true
+      }
+}
+""",
+            'target': """
+{
+  "array_key": [
+    1,
+    2,
+    3
+  ],
+  "key1": "val1",
+  "key2": 2,
+  "object": {
+    "bool_key": true
+  }
+}
+""",
+            'expected': """
+{
++   "array_key": [
++     1,
++     2,
++     3
++   ],
+-     "key1": "val1",
+? --
+
++   "key1": "val1",
+-     "key2":   2,
+? --          --
+
++   "key2": 2,
+- "array_key": [1, 2, 3],
+-         "object":{
+? ------
+
++   "object": {
+?            +
+
+-         "bool_key": true
+? ----
+
++     "bool_key": true
+-       }
++   }
+  }
+""",
+        },
+        {
+            'name': 'diff_test_2',
+            'source': '',
+            'target': '',
+            'expected': '',
+        },
+
+    ]
+    for test in table_tests:
+        s = list(test['source'])
+        t = list(test['target'])
+        expected = test['expected'].strip()
+        actual = get_diff(s, t).strip()
+        assert actual == expected
