JSON Schema is a specification for JSON
based format for defining the structure of JSON data. It was written under IETF
draft which expired in 2011. JSON Schema −
- Describes your existing data format.
- Clear, human- and machine-readable documentation.
- Complete structural validation, useful for
automated testing.
- Complete structural validation, validating
client-submitted data.
-
JSON Schema Validation
Libraries:
There
are several validators currently available for different programming languages.
Currently the most complete and compliant JSON Schema validator available is
JSV.
Languages
|
Libraries
|
C
|
WJElement (LGPLv3)
|
Java
|
json-schema-validator (LGPLv3)
|
.NET
|
Json.NET (MIT)
|
ActionScript 3
|
Frigga (MIT)
|
Haskell
|
aeson-schema (MIT)
|
Python
|
Jsonschema
|
Ruby
|
autoparse (ASL 2.0); ruby-jsonschema
(MIT)
|
PHP
|
php-json-schema (MIT). json-schema
(Berkeley)
|
JavaScript
|
Orderly (BSD); JSV; json-schema; Matic
(MIT); Dojo; Persevere (modified BSD or AFL 2.0); schema.js.
|
-
JSON Schema Example:
Given
below is a basic JSON schema, which covers a classical product catalog
description –
{
"$schema":"http://json-schema.org/draft-04/schema#",
"title":"Product",
"description":"A product from Acme's catalog",
"type":"object",
"properties":{
"id":{
"description":"The unique identifier for a product",
"type":"integer"
},
"name":{
"description":"Name of the product",
"type":"string"
},
"price":{
"type":"number",
"minimum":0,
"exclusiveMinimum":true
}
},
"required":["id","name","price"]
}
Let's the check various important keywords that can be used
in this schema –
S. No.
|
Keyword &
Description
|
1
|
$schema
The $schema keyword states that this
schema is written according to the draft v4 specification.
|
2
|
title
You will use this to give a title to
your schema.
|
3
|
description
A little description of the schema.
|
4
|
type
The type keyword defines the first
constraint on our JSON data: it has to be a JSON Object.
|
5
|
properties
Defines various keys and their value
types, minimum and maximum values to be used in JSON file.
|
6
|
required
This keeps a list of required
properties.
|
7
|
minimum
This is the constraint to be put on the
value and represents minimum acceptable value.
|
8
|
exclusiveMinimum
If "exclusiveMinimum" is
present and has boolean value true, the instance is valid if it is strictly
greater than the value of "minimum".
|
9
|
maximum
This is the constraint to be put on the
value and represents maximum acceptable value.
|
10
|
exclusiveMaximum
If "exclusiveMaximum" is
present and has boolean value true, the instance is valid if it is strictly
lower than the value of "maximum".
|
11
|
multipleOf
A numeric instance is valid against
"multipleOf" if the result of the division of the instance by this
keyword's value is an integer.
|
12
|
maxLength
The length of a string instance is
defined as the maximum number of its characters.
|
13
|
minLength
The length of a string instance is
defined as the minimum number of its characters.
|
14
|
pattern
A string instance is considered valid if
the regular expression matches the instance successfully.
|
You can check a http://json-schema.org for the complete list of keywords that can be used in
defining a JSON schema. The above schema can be used to test the validity of
the following JSON code −
[
{
"id":2,
"name":"An ice sculpture",
"price":12.50,
},
{
"id":3,
"name":"A blue mouse",
"price":25.50,
}
]