diff --git a/include/inja/renderer.hpp b/include/inja/renderer.hpp
index cd7f117..9c34025 100644
--- a/include/inja/renderer.hpp
+++ b/include/inja/renderer.hpp
@@ -41,19 +41,14 @@
   std::stack<const JsonNode*> not_found_stack;
 
   bool truthy(const json* data) const {
-    if (data->empty()) {
-      return false;
+    if (data->is_boolean()) {
+      return data->get<bool>();
     } else if (data->is_number()) {
       return (*data != 0);
-    } else if (data->is_string()) {
-      return !data->empty();
+    } else if (data->is_null()) {
+      return false;
     }
-
-    try {
-      return data->get<bool>();
-    } catch (json::type_error &e) {
-      throw JsonError(e.what());
-    }
+    return !data->empty();
   }
 
   void print_json(const std::shared_ptr<json> value) {
@@ -71,7 +66,6 @@
 
     if (json_eval_stack.empty()) {
       throw_renderer_error("empty expression", expression_list);
-    
     } else if (json_eval_stack.size() != 1) {
       throw_renderer_error("malformed expression", expression_list);
     }
diff --git a/single_include/inja/inja.hpp b/single_include/inja/inja.hpp
index 9919003..30277b1 100644
--- a/single_include/inja/inja.hpp
+++ b/single_include/inja/inja.hpp
@@ -3345,19 +3345,14 @@
   std::stack<const JsonNode*> not_found_stack;
 
   bool truthy(const json* data) const {
-    if (data->empty()) {
-      return false;
+    if (data->is_boolean()) {
+      return data->get<bool>();
     } else if (data->is_number()) {
       return (*data != 0);
-    } else if (data->is_string()) {
-      return !data->empty();
+    } else if (data->is_null()) {
+      return false;
     }
-
-    try {
-      return data->get<bool>();
-    } catch (json::type_error &e) {
-      throw JsonError(e.what());
-    }
+    return !data->empty();
   }
 
   void print_json(const std::shared_ptr<json> value) {
@@ -3375,7 +3370,6 @@
 
     if (json_eval_stack.empty()) {
       throw_renderer_error("empty expression", expression_list);
-    
     } else if (json_eval_stack.size() != 1) {
       throw_renderer_error("malformed expression", expression_list);
     }
