node package manager



jschema is a JSON schema validation library, written to follow the JSON-schema draft 03 spec as found at

It is not yet a complete implementation, missing things from the draft are:

  • item tuple schemas: the ability to define an array of schemas to match against an array
  • additionalItems: since item tuples aren't supported, this isn't really possible yet
  • default/title/description: while you can put these in your schema, they only serve as comments since the values are not used anywhere
  • format: see section 5.23 of the draft, none of this is implemented
  • extends: to maintain simplicity, extends is not implemented. it's easy enough to define your schema as smaller bits of json and reuse what you need to
  • id
  • $ref
  • $schema
  • Hyper Schema

Everything else stated in the spec is at least mostly functional. Note that, currently, there is no test suite. That's something I intend to fix ASAP.

Example usage:

var jschema = require('jschema');
var schema = {
    type: 'object',
    title: 'main',
    additionalProperties: {
        type: 'string'
    patternProperties: {
        'h$': {
            type: 'number'

var test = jschema(schema);
test.validate({ one: 'test', bath: 'cold', hearth: 'test', bacon: 'test' }, function (err) {
    if (err) {
        console.log(err); // properties 'bath' and 'hearth' will fail, as they match patternProperties and are not numbers
    } else {
        console.log('looks valid!');