diff --git a/lib/json/Makefile.am b/lib/json/Makefile.am
new file mode 100644
index 0000000..1051b9b
--- /dev/null
+++ b/lib/json/Makefile.am
@@ -0,0 +1,29 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+SUBDIRS =
+
+if WITH_JAVA
+# Schema validation test depends on java
+SUBDIRS += test
+endif
+
+EXTRA_DIST = \
+    schema.json \
+    test
diff --git a/lib/json/schema.json b/lib/json/schema.json
new file mode 100644
index 0000000..011b4d3
--- /dev/null
+++ b/lib/json/schema.json
@@ -0,0 +1,330 @@
+{
+  "$schema": "http://json-schema.org/draft-04/schema#",
+
+  "id": "http://thrift.apache.org/schema.json#",
+  "description": "Schema for Apache Thrift protocol descriptors",
+
+  "definitions": {
+    "type-id": {
+      "title": "Any type id (name)",
+      "enum": [
+        "void",
+        "string",
+        "bool",
+        "byte",
+        "i8",
+        "i16",
+        "i32",
+        "i64",
+        "double",
+        "list",
+        "set",
+        "map",
+        "union",
+        "struct",
+        "binary"
+      ]
+    },
+    "base-type": {
+      "title": "Base type schema",
+      "type": "object",
+      "properties": {
+        "typeId": {
+          "enum": ["void", "string", "bool", "byte", "i8", "i16", "i32", "i64", "double", "binary" ]
+        }
+      },
+      "required": [ "typeId" ]
+    },
+    "list-type": {
+      "title": "List and set schema",
+      "type": "object",
+      "properties": {
+        "typeId": {
+          "enum": [ "list", "set" ]
+        },
+        "elemTypeId":  { "$ref": "#/definitions/type-id" },
+        "elemType":    { "$ref": "#/definitions/type-desc" }
+      },
+      "required": [ "typeId", "elemTypeId" ]
+    },
+    "map-type": {
+      "title": "Map schema",
+      "type": "object",
+      "properties": {
+        "typeId": {
+          "enum": [ "map" ]
+        },
+        "keyTypeId":   { "$ref": "#/definitions/type-id" },
+        "keyType":     { "$ref": "#/definitions/type-desc" },
+        "valueTypeId": { "$ref": "#/definitions/type-id" },
+        "valueType":   { "$ref": "#/definitions/type-desc" }
+      },
+      "required": [ "typeId", "keyTypeId", "valueTypeId" ]
+    },
+    "struct-type": {
+      "title": "Struct, union and exception schema",
+      "type": "object",
+      "properties": {
+        "typeId": {
+          "enum": [ "union", "struct", "exception" ]
+        }
+      },
+      "required": [ "typeId", "class" ]
+    },
+    "type-desc": {
+      "title": "Type descriptor schema",
+      "allOf": [
+        {
+            "type": "object",
+            "properties": {
+                "typeId":      { "type": "string" },
+                "class":       { "type": "string" }
+            }
+        },
+        {
+          "oneOf":
+          [
+            { "$ref": "#/definitions/base-type" },
+            { "$ref": "#/definitions/list-type" },
+            { "$ref": "#/definitions/map-type" },
+            { "$ref": "#/definitions/struct-type" }
+          ]
+        }
+      ]
+    },
+    "name-and-doc": {
+      "title": "Name and documentation sub-schema",
+      "type": "object",
+      "properties": {
+        "name": { "type": "string" },
+        "doc": { "type": "string" }
+      },
+      "required": [ "name" ]
+    },
+    "enum": {
+      "title": "Thrift 'enum' definition schema",
+      "type": "object",
+      "allOf": [
+        { "$ref": "#/definitions/name-and-doc" },
+        {
+          "required": [ "members" ],
+          "properties": {
+            "members": {
+              "type": "array",
+              "items": {
+                "type": "object",
+                "properties": {
+                  "name": { "type": "string" },
+                  "value": { "type": "integer" }
+                },
+                "required": [ "name", "value" ]
+              }
+            }
+          }
+        }
+      ]
+    },
+    "typedef": {
+      "title": "Thrift typedef definition schema",
+      "type": "object",
+      "allOf": [
+        { "$ref": "#/definitions/name-and-doc" },
+        {
+          "properties": {
+            "typeId": { "$ref": "#/definitions/type-id" },
+            "type": { "$ref": "#/definitions/type-desc" }
+          },
+          "required": [ "typeId" ]
+        }
+      ]
+    },
+    "constant": {
+      "title": "Thrift constant definition schema",
+      "type": "object",
+      "allOf": [
+        { "$ref": "#/definitions/name-and-doc" },
+        { "$ref": "#/definitions/type-desc" },
+        {
+          "properties": {
+            "value": {
+              "oneOf": [
+                { "type": "string" },
+                { "type": "number" },
+                { "type": "array" },
+                { "type": "object" }
+              ]
+            }
+          },
+          "required": [ "value" ]
+        }
+      ]
+    },
+    "field": {
+      "title": "Thrift struct field definition schema",
+      "type": "object",
+      "allOf": [
+        { "$ref": "#/definitions/name-and-doc" },
+        {
+          "properties": {
+            "key": {
+              "type": "integer",
+              "minimum": 1,
+              "maximum": 65535
+            },
+            "required": {
+              "enum": [ "required", "optional", "req_out" ]
+            },
+            "typeId": { "$ref": "#/definitions/type-id" },
+            "type": { "$ref": "#/definitions/type-desc" },
+            "default": {
+              "oneOf": [
+                { "type": "string" },
+                { "type": "number" },
+                { "type": "array" },
+                { "type": "object" }
+              ]
+            }
+          },
+          "required": [ "key", "required" ]
+        }
+      ]
+    },
+    "struct": {
+      "title": "Thrift struct definition schema",
+      "type": "object",
+      "allOf": [
+        { "$ref": "#/definitions/name-and-doc" },
+        {
+          "properties": {
+            "isException": { "type": "boolean" },
+            "isUnion": { "type": "boolean" },
+            "fields": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/field"
+              }
+            }
+          },
+          "required": [ "isException", "isUnion", "fields" ]
+        }
+      ]
+    },
+    "union": {
+      "title": "Thrift union definition schema",
+      "$ref": "#/definitions/struct"
+    },
+    "exception": {
+      "title": "Thrift exception definition schema",
+      "type": "object",
+      "properties": {
+        "key": {
+          "type": "integer",
+          "minimum": 1,
+          "maximum": 65535
+        },
+        "name": { "type": "string" },
+        "typeId": { "enum": [ "exception" ] },
+        "type": { "$ref": "#/definitions/struct-type" }
+      },
+      "required": [ "key", "name", "typeId" ]
+    },
+    "function": {
+      "title": "Thrift service function definition schema",
+      "type": "object",
+      "allOf": [
+        { "$ref": "#/definitions/name-and-doc" },
+        {
+          "properties": {
+            "oneway": {
+              "type": "boolean"
+            },
+            "returnType": {
+              "$ref": "#/definitions/type-desc"
+            },
+            "arguments": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/field"
+              }
+            },
+            "exceptions": {
+              "type": "array",
+              "items": { "$ref": "#/definitions/exception" }
+            }
+          },
+          "required": [ "oneway", "arguments", "exceptions" ]
+        }
+      ]
+    },
+    "service": {
+      "title": "Thrift service definition schema",
+      "type": "object",
+      "allOf": [
+        { "$ref": "#/definitions/name-and-doc" },
+        {
+          "properties": {
+            "functions": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/function"
+              }
+            }
+          },
+          "required": [ "functions" ]
+        }
+      ]
+    }
+  },
+
+  "type": "object",
+  "required": [
+    "name",
+    "enums",
+    "typedefs",
+    "structs",
+    "constants",
+    "services"
+  ],
+  "properties": {
+    "name": {
+      "type": "string"
+    },
+    "includes": {
+      "type": "array",
+      "items": {
+        "type": "string"
+      },
+      "uniqueItems": true
+    },
+    "enums": {
+      "type": "array",
+      "items": {
+        "$ref": "#/definitions/enum"
+      }
+    },
+    "typedefs": {
+      "type": "array",
+      "items": {
+        "$ref": "#/definitions/typedef"
+      }
+    },
+    "structs": {
+      "type": "array",
+      "items": {
+        "$ref": "#/definitions/struct"
+      }
+    },
+    "constants": {
+      "type": "array",
+      "items": {
+        "$ref": "#/definitions/constant"
+      }
+    },
+    "services": {
+      "type": "array",
+      "items": {
+        "$ref": "#/definitions/service"
+      }
+    }
+  }
+}
diff --git a/lib/json/test/Makefile.am b/lib/json/test/Makefile.am
new file mode 100644
index 0000000..bb87a52
--- /dev/null
+++ b/lib/json/test/Makefile.am
@@ -0,0 +1,26 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+check:
+	$(ANT) $(ANT_FLAGS) test
+
+# Make sure this doesn't fail if ant is not configured.
+clean-local:
+	ANT=$(ANT) ; if test -z "$$ANT" ; then ANT=: ; fi ; \
+	$$ANT $(ANT_FLAGS) clean
diff --git a/lib/json/test/build.properties b/lib/json/test/build.properties
new file mode 100644
index 0000000..075f640
--- /dev/null
+++ b/lib/json/test/build.properties
@@ -0,0 +1,10 @@
+# Jar versions
+mvn.ant.task.version=2.1.3
+
+# Dependency versions
+json-schema-validator.version=2.2.6
+
+# Maven dependency download locations
+mvn.repo=http://repo1.maven.org/maven2
+mvn.ant.task.url=${mvn.repo}/org/apache/maven/maven-ant-tasks/${mvn.ant.task.version}
+mvn.ant.task.jar=maven-ant-tasks-${mvn.ant.task.version}.jar
diff --git a/lib/json/test/build.xml b/lib/json/test/build.xml
new file mode 100644
index 0000000..956a238
--- /dev/null
+++ b/lib/json/test/build.xml
@@ -0,0 +1,144 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+<project name="JSON Schema Test" default="test" basedir="."
+  xmlns:artifact="antlib:org.apache.maven.artifact.ant">
+
+  <description>JSON Schema Validation Test</description>
+
+  <property name="build.dir" location="${basedir}/build" />
+  <property name="json.dir" location="${basedir}/.." />
+  <property name="gen.json.dir" location="${build.dir}/gen-json" />
+  <property name="json.schema" location="${json.dir}/schema.json" />
+  <property name="build.tools.dir" location="${build.dir}/tools"/>
+  <property name="build.lib.dir" location="${build.dir}/lib"/>
+
+  <!-- the root directory, where you unpack thrift distibution (e.g. thrift-0.x.x.tar.gz) -->
+  <property name="thrift.dir" location="../../../" />
+  <property name="thrift.test.dir" location="${thrift.dir}/test" />
+  <property name="thrift.compiler" location="${thrift.dir}/compiler/cpp/thrift" />
+
+  <!-- Get maven dependency versions from here -->
+  <property file="${basedir}/build.properties" />
+
+  <path id="test.classpath">
+    <fileset dir="${build.lib.dir}">
+      <include name="*.jar" />
+    </fileset>
+  </path>
+
+  <target name="compiler.check">
+    <fail>
+      <condition>
+        <not>
+          <resourcecount count="1">
+            <fileset id="fs" file="${thrift.compiler}"/>
+          </resourcecount>
+        </not>
+      </condition>
+      Thrift compiler is missing !
+    </fail>
+  </target>
+
+  <target name="init" depends="compiler.check, mkdirs, mvn.init">
+    <tstamp />
+  </target>
+
+  <target name="mkdirs">
+    <mkdir dir="${build.dir}"/>
+    <mkdir dir="${build.lib.dir}"/>
+    <mkdir dir="${build.tools.dir}"/>
+    <mkdir dir="${gen.json.dir}"/>
+  </target>
+
+  <target name="generate" depends="init">
+    <exec executable="${thrift.compiler}" failonerror="true">
+      <arg line="--gen json"/>
+      <arg line="-out ${gen.json.dir}"/>
+      <arg line="${thrift.test.dir}/ThriftTest.thrift"/>
+    </exec>
+    <exec executable="${thrift.compiler}" failonerror="true">
+      <arg line="--gen json:merge"/>
+      <arg line="-out ${gen.json.dir}"/>
+      <arg line="${thrift.test.dir}/Include.thrift"/>
+    </exec>
+  </target>
+
+  <target name="test" description="run schema validation"
+          depends="validate-schema, validate-generated-json"/>
+
+  <target name="validate-schema" depends="init">
+    <java classname="com.github.fge.jsonschema.main.cli.Main"
+          classpathref="test.classpath" failonerror="true">
+      <arg value="--syntax"/>
+      <arg value="${json.schema}"/>
+    </java>
+  </target>
+
+  <target name="validate-generated-json" depends="init, generate">
+    <validate-json file="${gen.json.dir}/ThriftTest.json"/>
+    <validate-json file="${gen.json.dir}/Include.json"/>
+  </target>
+
+  <target name="clean">
+    <delete dir="${build.dir}" />
+    <delete dir="${gen.json.dir}" />
+  </target>
+
+  <target name="mvn.ant.tasks.download" depends="mkdirs,mvn.ant.tasks.check" unless="mvn.ant.tasks.found">
+    <get src="${mvn.ant.task.url}/${mvn.ant.task.jar}" dest="${build.tools.dir}/${mvn.ant.task.jar}" usetimestamp="true"/>
+  </target>
+
+  <target name="mvn.ant.tasks.check">
+    <condition property="mvn.ant.tasks.found">
+      <typefound uri="antlib:org.apache.maven.artifact.ant" name="artifact"/>
+    </condition>
+  </target>
+
+  <target name="mvn.init" depends="mvn.ant.tasks.download" unless="mvn.finished">
+    <typedef uri="antlib:org.apache.maven.artifact.ant" classpath="${build.tools.dir}/${mvn.ant.task.jar}"/>
+
+    <artifact:dependencies filesetId="test.dependency.jars">
+      <dependency groupId="com.github.fge" artifactId="json-schema-validator" version="${json-schema-validator.version}"/>
+    </artifact:dependencies>
+
+    <!-- Copy the dependencies to the build/lib dir -->
+    <copy todir="${build.lib.dir}">
+      <fileset refid="test.dependency.jars"/>
+      <mapper type="flatten"/>
+    </copy>
+
+    <property name="mvn.finished" value="true"/>
+  </target>
+
+  <macrodef name="validate-json">
+    <attribute name="file" default=""/>
+    <sequential>
+      <java failonerror="true"
+            fork="true"
+            dir="${json.dir}"
+            classname="com.github.fge.jsonschema.main.cli.Main"
+            classpathref="test.classpath">
+        <arg line="--fakeroot http://thrift.apache.org/"/>
+        <arg value="${json.schema}"/>
+        <arg value="@{file}"/>
+      </java>
+    </sequential>
+  </macrodef>
+
+</project>
