JSON Schema is a specification for JSON based format for defining 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
Following 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 check various important keywords which can be used in this schema:
| Keywords | Description |
|---|---|
| $schema | The $schema keyword states that this schema is written according to the draft v4 specification. |
| title | You will use this to give a title to your schema |
| description | A little description of the schema |
| type | The type keyword defines the first constraint on our JSON data: it has to be a JSON Object. |
| properties | Defines various keys and their value types, minimum and maximum values to be used in JSON file. |
| required | This keeps a list of required properties. |
| minimum | This is the constraint to be put on the value and represents minimum acceptable value. |
| exclusiveMinimum | If "exclusiveMinimum" is present and has boolean value true, the instance is valid if it is strictly greater than the value of "minimum". |
| maximum | This is the constraint to be put on the value and represents maximum acceptable value. |
| exclusiveMaximum | If "exclusiveMaximum" is present and has boolean value true, the instance is valid if it is strictly lower than the value of "maximum". |
| 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. |
| maxLength | The length of a string instance is defined as the maximum number of its characters. |
| minLength | The length of a string instance is defined as the minimum number of its characters. |
| pattern | A string instance is considered valid if the regular expression matches the instance successfully. |
You can check a http://json-schema.org for complete list of keywords which can be used in defining JSON schema. Above schema can be used to test the validity of the below given JSON code:
[ { "id": 2, "name": "An ice sculpture", "price": 12.50, }, { "id": 3, "name": "A blue mouse", "price": 25.50, } ]
No comments:
Post a Comment