diff --git a/compiler/cpp/src/thrift/generate/t_json_generator.cc b/compiler/cpp/src/thrift/generate/t_json_generator.cc
index f3d67e0..153ec35 100644
--- a/compiler/cpp/src/thrift/generate/t_json_generator.cc
+++ b/compiler/cpp/src/thrift/generate/t_json_generator.cc
@@ -264,6 +264,15 @@
 
   write_string(get_type_name(ttype));
 
+  if (ttype->annotations_.size() > 0) {
+    write_key_and("annotations");
+    start_object();
+    for (map<string, string>::iterator it = ttype->annotations_.begin(); it != ttype->annotations_.end(); ++it) {
+      write_key_and_string(it->first, it->second);
+    }
+    end_object();
+  }
+
   if (ttype->is_struct() || ttype->is_xception()) {
     write_key_and_string("class", get_qualified_name(ttype));
   } else if (ttype->is_map()) {
@@ -445,6 +454,14 @@
   if (ttypedef->has_doc()) {
     write_key_and_string("doc", ttypedef->get_doc());
   }
+  if (ttypedef->annotations_.size() > 0) {
+    write_key_and("annotations");
+    start_object();
+    for (map<string, string>::iterator it = ttypedef->annotations_.begin(); it != ttypedef->annotations_.end(); ++it) {
+      write_key_and_string(it->first, it->second);
+    }
+    end_object();
+  }
   end_object();
 }
 
@@ -544,6 +561,15 @@
     write_key_and_string("doc", tenum->get_doc());
   }
 
+  if (tenum->annotations_.size() > 0) {
+      write_key_and("annotations");
+      start_object();
+      for (map<string, string>::iterator it = tenum->annotations_.begin(); it != tenum->annotations_.end(); ++it) {
+        write_key_and_string(it->first, it->second);
+      }
+      end_object();
+  }
+
   write_key_and("members");
   start_array();
   vector<t_enum_value*> values = tenum->get_constants();
@@ -574,6 +600,15 @@
     write_key_and_string("doc", tstruct->get_doc());
   }
 
+  if (tstruct->annotations_.size() > 0) {
+    write_key_and("annotations");
+    start_object();
+    for (map<string, string>::iterator it = tstruct->annotations_.begin(); it != tstruct->annotations_.end(); ++it) {
+      write_key_and_string(it->first, it->second);
+    }
+    end_object();
+  }
+
   write_key_and_bool("isException", tstruct->is_xception());
 
   write_key_and_bool("isUnion", tstruct->is_union());
@@ -605,6 +640,15 @@
     write_key_and_string("doc", tservice->get_doc());
   }
 
+  if (tservice->annotations_.size() > 0) {
+    write_key_and("annotations");
+    start_object();
+    for (map<string, string>::iterator it = tservice->annotations_.begin(); it != tservice->annotations_.end(); ++it) {
+      write_key_and_string(it->first, it->second);
+    }
+    end_object();
+  }
+
   write_key_and("functions");
   start_array();
   vector<t_function*> functions = tservice->get_functions();
@@ -633,6 +677,15 @@
     write_key_and_string("doc", tfunc->get_doc());
   }
 
+  if (tfunc->annotations_.size() > 0) {
+    write_key_and("annotations");
+    start_object();
+    for (map<string, string>::iterator it = tfunc->annotations_.begin(); it != tfunc->annotations_.end(); ++it) {
+      write_key_and_string(it->first, it->second);
+    }
+    end_object();
+  }
+
   write_key_and("arguments");
   start_array();
   vector<t_field*> members = tfunc->get_arglist()->get_members();
@@ -670,6 +723,15 @@
     write_key_and_string("doc", field->get_doc());
   }
 
+  if (field->annotations_.size() > 0) {
+    write_key_and("annotations");
+    start_object();
+    for (map<string, string>::iterator it = field->annotations_.begin(); it != field->annotations_.end(); ++it) {
+      write_key_and_string(it->first, it->second);
+    }
+    end_object();
+  }
+
   write_key_and("required");
   switch (field->get_req()) {
   case t_field::T_REQUIRED:
diff --git a/lib/json/schema.json b/lib/json/schema.json
index 011b4d3..d058a7c 100644
--- a/lib/json/schema.json
+++ b/lib/json/schema.json
@@ -273,6 +273,13 @@
           "required": [ "functions" ]
         }
       ]
+    },
+    "annotations": {
+      "title": "Map of annotation names to values",
+      "type": "object",
+      "additionalProperties": {
+        "type": "string"
+      }
     }
   },
 
@@ -296,6 +303,12 @@
       },
       "uniqueItems": true
     },
+    "namespaces": {
+      "type": "object",
+      "additionalProperties": {
+        "type": "string"
+      }
+    },
     "enums": {
       "type": "array",
       "items": {
@@ -326,5 +339,6 @@
         "$ref": "#/definitions/service"
       }
     }
-  }
+  },
+  "additionalProperties": false
 }
