diff --git a/homeassistant/helpers/template.py b/homeassistant/helpers/template.py
index e82302dfd3b9cdc79f24f1488ce37acbcbd6b65c..d8bbcbc6e122ae1ca99ef347fc8b94dfc26bd62b 100644
--- a/homeassistant/helpers/template.py
+++ b/homeassistant/helpers/template.py
@@ -165,7 +165,7 @@ class Template:
 
         try:
             variables['value_json'] = json.loads(value)
-        except ValueError:
+        except (ValueError, TypeError):
             pass
 
         try:
diff --git a/tests/helpers/test_template.py b/tests/helpers/test_template.py
index 02331c400d36771010c8dea7aea487f21824e647..3febd4037ad099983ae2276c149590f175f1006b 100644
--- a/tests/helpers/test_template.py
+++ b/tests/helpers/test_template.py
@@ -4,6 +4,7 @@ from datetime import datetime
 import unittest
 import random
 import math
+import pytz
 from unittest.mock import patch
 
 from homeassistant.components import group
@@ -422,6 +423,16 @@ class TestHelpersTemplate(unittest.TestCase):
         assert '' == \
             tpl.render_with_possible_json_value('{"hello": "world"}', '')
 
+    def test_render_with_possible_json_value_non_string_value(self):
+        """Render with possible JSON value with non-string value."""
+        tpl = template.Template("""
+{{ strptime(value~'+0000', '%Y-%m-%d %H:%M:%S%z') }}
+            """, self.hass)
+        value = datetime(2019, 1, 18, 12, 13, 14)
+        expected = str(pytz.utc.localize(value))
+        assert expected == \
+            tpl.render_with_possible_json_value(value)
+
     def test_raise_exception_on_error(self):
         """Test raising an exception on error."""
         with pytest.raises(TemplateError):