Skip to main content

JSON validator package based on jsonschema that returns nicer validation errors for end users

Project description

CircleCI PyPI pyversions PyPI version shields.io PyPI license

Little Python package that formats validation error messages from jsonschema. You should use this package if you want a stand alone json validator decoupled from any framework.

Reason of being

jsonschema is really cool but its validation error messages suck as they’re meant for developers, not end users. So if you have an API that uses jsonschema to validate json payloads and want to return nicer error messages to your end users you can use this package :)

How it works

3 simple rules:

  • If you don’t send a required property in the payload you’ll get the message 'foo' is a required property.
  • If validation fails the validation rule will be returned Validation of property 'foo' failed: {'minLength': 2, 'type': 'string', 'maxLength': 50}.
  • If you add message property in a validation rule its value will be returned instead of the rule Validation of property 'foo' failed: Custom error message.

Usage

pip install json_payload_validator

Successful validation example

from json_payload_validator import validate

schema = {
    'type': 'object',
    'properties': {
        'name': {'type': 'string', 'minLength': 2, 'maxLength': 50},
    },
    'required': [
        'name'
    ]
}

payload = {'name': 'John Maus'}

error = validate(payload, schema)
print(error) # None

Required property example

from json_payload_validator import validate

schema = {
    'type': 'object',
    'properties': {
        'name': {'type': 'string'},
    },
    'required': [
        'name'
    ]
}

payload = {}

error = validate(payload, schema)
print(error) # 'name' is a required property

Validation rule failure example

from json_payload_validator import validate

schema = {
    'type': 'object',
    'properties': {
        'name': {'type': 'string', {'minLength': 2, 'type': 'string', 'maxLength': 50}},
    },
    'required': [
        'name'
    ]
}

payload = {'name': 555}

error = validate(payload, schema)
print(error) # Validation of property 'name' failed: {'minLength': 2, 'type': 'string', 'maxLength': 50}

Custom error message example

from json_payload_validator import validate

schema = {
    'type': 'object',
    'properties': {
        'name': {'type': 'string', 'message': 'Name must be a string'},
    },
    'required': [
        'name'
    ]
}

payload = {'name': 555}

error = validate(payload, schema)
print(error) # Validation of property 'name' failed: Name must be a string

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Filename, size & hash SHA256 hash help File type Python version Upload date
json_payload_validator-0.1.2.tar.gz (3.4 kB) Copy SHA256 hash SHA256 Source None

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page