diff --git a/json_object.c b/json_object.c
index 7848630..ef54ecd 100644
--- a/json_object.c
+++ b/json_object.c
@@ -166,11 +166,15 @@
 
 int json_object_is_type(struct json_object *jso, enum json_type type)
 {
+  if (!jso)
+    return (type == json_type_null);
   return (jso->o_type == type);
 }
 
 enum json_type json_object_get_type(struct json_object *jso)
 {
+  if (!jso)
+    return json_type_null;
   return jso->o_type;
 }
 
diff --git a/json_object.h b/json_object.h
index 1ee9fb0..e9898f4 100644
--- a/json_object.h
+++ b/json_object.h
@@ -79,6 +79,7 @@
  * Check if the json_object is of a given type
  * @param obj the json_object instance
  * @param type one of:
+     json_type_null (i.e. obj == NULL),
      json_type_boolean,
      json_type_double,
      json_type_int,
@@ -92,6 +93,7 @@
  * Get the type of the json_object
  * @param obj the json_object instance
  * @returns type being one of:
+     json_type_null (i.e. obj == NULL),
      json_type_boolean,
      json_type_double,
      json_type_int,
diff --git a/test_cast.c b/test_cast.c
index 6459250..aad44d0 100644
--- a/test_cast.c
+++ b/test_cast.c
@@ -1,5 +1,6 @@
 /*
  * Tests if casting within the json_object_get_* functions work correctly.
+ * Also checks the json_object_get_type and json_object_is_type functions.
  */
 
 #include <stdio.h>
@@ -13,6 +14,8 @@
 #include "json_util.h"
 
 static void getit(struct json_object *new_obj, const char *field);
+static void checktype_header(void);
+static void checktype(struct json_object *new_obj, const char *field);
 
 int main(int argc, char **argv)
 {
@@ -23,6 +26,7 @@
 		\"boolean_true\": true,\n\
 		\"boolean_false\": false,\n\
 		\"big_number\": 2147483649,\n\
+		\"a_null\": null,\n\
 	}";
 	/* Note: 2147483649 = INT_MAX + 2 */
 
@@ -40,6 +44,19 @@
 	getit(new_obj, "boolean_true");
 	getit(new_obj, "boolean_false");
 	getit(new_obj, "big_number");
+	getit(new_obj, "a_null");
+
+	// Now check the behaviour of the json_object_is_type() function.
+	printf("\n================================\n");
+	checktype_header();
+	checktype(new_obj, NULL);
+	checktype(new_obj, "string_of_digits");
+	checktype(new_obj, "regular_number");
+	checktype(new_obj, "decimal_number");
+	checktype(new_obj, "boolean_true");
+	checktype(new_obj, "boolean_false");
+	checktype(new_obj, "big_number");
+	checktype(new_obj, "a_null");
 
     json_object_put(new_obj);
 
@@ -62,3 +79,28 @@
 	printf("new_obj.%s json_object_get_double()=%f\n", field,
 	       json_object_get_double(o));
 }
+
+static void checktype_header()
+{
+	printf("json_object_is_type: %s,%s,%s,%s,%s,%s,%s\n",
+		json_type_to_name(json_type_null),
+		json_type_to_name(json_type_boolean),
+		json_type_to_name(json_type_double),
+		json_type_to_name(json_type_int),
+		json_type_to_name(json_type_object),
+		json_type_to_name(json_type_array),
+		json_type_to_name(json_type_string));
+}
+static void checktype(struct json_object *new_obj, const char *field)
+{
+	struct json_object *o = field ? json_object_object_get(new_obj, field) : new_obj;
+	printf("new_obj%s%-18s: %d,%d,%d,%d,%d,%d,%d\n",
+		field ? "." : " ", field ? field : "",
+		json_object_is_type(o, json_type_null),
+		json_object_is_type(o, json_type_boolean),
+		json_object_is_type(o, json_type_double),
+		json_object_is_type(o, json_type_int),
+		json_object_is_type(o, json_type_object),
+		json_object_is_type(o, json_type_array),
+		json_object_is_type(o, json_type_string));
+}
diff --git a/test_cast.expected b/test_cast.expected
index d079e04..76ff823 100644
--- a/test_cast.expected
+++ b/test_cast.expected
@@ -5,6 +5,7 @@
 		"boolean_true": true,
 		"boolean_false": false,
 		"big_number": 2147483649,
+		"a_null": null,
 	}
 Result is not NULL
 new_obj.string_of_digits json_object_get_type()=string
@@ -37,3 +38,19 @@
 new_obj.big_number json_object_get_int64()=2147483649
 new_obj.big_number json_object_get_boolean()=1
 new_obj.big_number json_object_get_double()=2147483649.000000
+new_obj.a_null json_object_get_type()=null
+new_obj.a_null json_object_get_int()=0
+new_obj.a_null json_object_get_int64()=0
+new_obj.a_null json_object_get_boolean()=0
+new_obj.a_null json_object_get_double()=0.000000
+
+================================
+json_object_is_type: null,boolean,double,int,object,array,string
+new_obj                   : 0,0,0,0,1,0,0
+new_obj.string_of_digits  : 0,0,0,0,0,0,1
+new_obj.regular_number    : 0,0,0,1,0,0,0
+new_obj.decimal_number    : 0,0,1,0,0,0,0
+new_obj.boolean_true      : 0,1,0,0,0,0,0
+new_obj.boolean_false     : 0,1,0,0,0,0,0
+new_obj.big_number        : 0,0,0,1,0,0,0
+new_obj.a_null            : 1,0,0,0,0,0,0
