diff --git a/typ/json_results.py b/typ/json_results.py
index bb693a2..3f20531 100644
--- a/typ/json_results.py
+++ b/typ/json_results.py
@@ -90,8 +90,7 @@
     full_results['tests'] = OrderedDict()
 
     for test_name in all_test_names:
-        value = OrderedDict()
-        value['actual'] = _actual_results_for_test(test_name, results)
+        value = _results_for_test(test_name, results)
         if test_name in skipped_tests:
             value['expected'] = 'SKIP'
         else:
@@ -141,8 +140,10 @@
     return set(r.name for r in results.results if r.actual == ResultType.Pass)
 
 
-def _actual_results_for_test(test_name, results):
+def _results_for_test(test_name, results):
+    value = OrderedDict()
     actuals = []
+    times = []
     for r in results.results:
         if r.name == test_name:
             if r.actual == ResultType.Failure:
@@ -151,10 +152,18 @@
                 actuals.append('PASS')
             elif r.actual == ResultType.Skip:
                 actuals.append('SKIP')
+
+            # The time a test takes is a floating point number of seconds;
+            # if we were to encode this unmodified, then when we converted it
+            # to JSON it might make the file significantly larger. Instead
+            # we truncate the file to ten-thousandths of a second, which is
+            # probably more than good enough for most tests.
+            times.append(round(r.took, 4))
     if not actuals:  # pragma: untested
         actuals.append('SKIP')
-    return ' '.join(actuals)
-
+    value['actual'] = ' '.join(actuals)
+    value['times'] = times
+    return value
 
 def _add_path_to_trie(trie, path, value):
     if TEST_SEPARATOR not in path:
diff --git a/typ/tests/json_results_test.py b/typ/tests/json_results_test.py
index 5dfab61..76446f9 100644
--- a/typ/tests/json_results_test.py
+++ b/typ/tests/json_results_test.py
@@ -70,14 +70,14 @@
         result_set = json_results.ResultSet()
         result_set.add(
             json_results.Result('foo_test.FooTest.test_fail',
-                                json_results.ResultType.Failure, 0, 0, 0,
+                                json_results.ResultType.Failure, 0, 0.1, 0,
                                 unexpected=True))
         result_set.add(json_results.Result('foo_test.FooTest.test_pass',
                                            json_results.ResultType.Pass,
-                                           0, 0, 0))
+                                           0, 0.2, 0))
         result_set.add(json_results.Result('foo_test.FooTest.test_skip',
                                            json_results.ResultType.Skip,
-                                           0, 0, 0, unexpected=False))
+                                           0, 0.3, 0, unexpected=False))
 
         full_results = json_results.make_full_results(
             ['foo=bar'], 0, test_names, result_set)
@@ -96,12 +96,18 @@
                         'test_fail': {
                             'expected': 'PASS',
                             'actual': 'FAIL',
-                            'is_unexpected': True},
+                            'times': [0.1],
+                            'is_unexpected': True,
+                        },
                         'test_pass': {
                             'expected': 'PASS',
-                            'actual': 'PASS'},
+                            'actual': 'PASS',
+                            'times': [0.2],
+                        },
                         'test_skip': {
                             'expected': 'SKIP',
-                            'actual': 'SKIP'}}}},
+                            'actual': 'SKIP',
+                            'times': [0.3],
+                        }}}},
             'version': 3}
         self.assertEqual(full_results, expected_full_results)
diff --git a/typ/tests/main_test.py b/typ/tests/main_test.py
index 771e987..eb21ec4 100644
--- a/typ/tests/main_test.py
+++ b/typ/tests/main_test.py
@@ -706,6 +706,14 @@
         results = json.loads(files['results.json'])
         self.assertEqual(results['interrupted'], False)
         self.assertEqual(results['path_delimiter'], '.')
+
+        # The time it takes to run the test varies, so we test that
+        # we got a single entry greater than zero, but then delete it from
+        # the result so we can do an exact match on the rest of the trie.
+        result = results['tests']['pass_test']['PassingTest']['test_pass']
+        self.assertEqual(len(result['times']), 1)
+        self.assertGreater(result['times'][0], 0)
+        result.pop('times')
         self.assertEqual(results['tests'],
                          {u'pass_test': {
                              u'PassingTest': {
