# test_jsonschema_unix.py # A program to try the jsonschema Python library. # Uses it to validate some JSON data. # Follows the Unix convention of writing normal output to the standard # output (stdout), and errors to the standard error output (stderr). # Author: Vasudev Ram # Copyright 2015 Vasudev Ram from __future__ import print_function import sys import json import jsonschema from jsonschema import validate # Create the schema, as a nested Python dict, # specifying the data elements, their names and their types. schema = { "type" : "object", "properties" : { "price" : {"type" : "number"}, "name" : {"type" : "string"}, }, } print("Testing use of jsonschema for data validation.") print("Using the following schema:") print(schema) print("Pretty-printed schema:") print(json.dumps(schema, indent=4)) # The data to be validated: # Two records OK, three records in ERROR. data = \ [ { "name": "Apples", "price": 10}, { "name": "Bananas", "price": 20}, { "name": "Cherries", "price": "thirty"}, { "name": 40, "price": 40}, { "name": 50, "price": "fifty"} ] print("Raw input data:") print(data) print("Pretty-printed input data:") print(json.dumps(data, indent=4)) print("Validating the input data using jsonschema:") for idx, item in enumerate(data): try: validate(item, schema) sys.stdout.write("Record #{}: OK\n".format(idx)) except jsonschema.exceptions.ValidationError as ve: sys.stderr.write("Record #{}: ERROR\n".format(idx)) sys.stderr.write(str(ve) + "\n")