add json_object_object_length
diff --git a/json_object.c b/json_object.c
index 6060554..9dc6637 100644
--- a/json_object.c
+++ b/json_object.c
@@ -390,6 +390,11 @@
 	existing_entry->v = val;
 }
 
+int json_object_object_length(struct json_object *jso)
+{
+	return lh_table_length(jso->o.c_object);
+}
+
 struct json_object* json_object_object_get(struct json_object* jso, const char *key)
 {
 	struct json_object *result = NULL;
diff --git a/json_object.h b/json_object.h
index 0ff6584..336ce96 100644
--- a/json_object.h
+++ b/json_object.h
@@ -215,6 +215,8 @@
  */
 extern struct lh_table* json_object_get_object(struct json_object *obj);
 
+extern int json_object_object_length(struct json_object* obj);
+
 /** Add an object field to a json_object of type json_type_object
  *
  * The reference count will *not* be incremented. This is to make adding
diff --git a/linkhash.c b/linkhash.c
index ddedc12..2661823 100644
--- a/linkhash.c
+++ b/linkhash.c
@@ -227,3 +227,7 @@
 	return lh_table_delete_entry(t, e);
 }
 
+int lh_table_length(struct lh_table *t)
+{
+	return t->count;
+}
diff --git a/linkhash.h b/linkhash.h
index bbb5488..378de0b 100644
--- a/linkhash.h
+++ b/linkhash.h
@@ -280,6 +280,7 @@
  */
 extern int lh_table_delete(struct lh_table *t, const void *k);
 
+extern int lh_table_length(struct lh_table *t);
 
 void lh_abort(const char *msg, ...);
 void lh_table_resize(struct lh_table *t, int new_size);