JSON Schema and Hyper-Schema : JSON Tutorial



JSON Schema : specifies a JSON based format to define the structure of JSON data for validation, documentation, and interaction control.

JSON Hyper-Schema : is used to convert JSON data into hyper-texts.

JSON Schema provides rules for JSON data that is required for a given application and how to interact with it.

There are many validators available for JSON based on different programming languages.

JSON Schema can be used to validate JSON data.

JSON Schema is based on the concepts from XML Schema.


JSON Schema specifies :
    1. How the data format should be.
    2. Easy to understand Documentation.
    3. Data for Validation.
    4. Structural validation for automated testing and validating client-submitted data.


Example :
{
	"title": "Example of JSON Schema",
	"type": "object",
	"properties": {
		"firstName": {
			"type": "string"
		},
		"lastName": {
			"type": "string"
		},
		"age": {
			"description": "Age in years",
			"type": "integer",
			"minimum": 0
		}
	},
	"required": ["firstName", "lastName"]
}


JSON Hyper-Schema :
    1. It describes existing API - no new structures required.
    2. Used to create links (including URI Templates for target URIs)
    3. Used to create forms - specify a JSON Schema for the desired data.
Example :
	{
    "title": "Example Hyper-Schema",
    "type": "object",
    "properties": {
        "id": {
            "title": "Article Identifier",
            "type": "number"
        },
        "title": {
            "title": "Article Title",
            "type": "string"
        },
        "authorId": {
            "type": "integer"
        },
        "imgData": {
            "title": "Article Illustration (small)",
            "type": "string",
            "media": {
                "binaryEncoding": "base64",
                "type": "image/png"
            }
        }
    },
    "required" : ["id", "title", "authorId"],
    "links": [
        {
            "rel": "full",
            "href": "{id}"
        },
        {
            "rel": "author",
            "href": "/user?id={authorId}"
        }
    ]
}