DEV Community

Maxime Guilbert
Maxime Guilbert

Posted on • Edited on

3 1

How to validate a JSON file with JSON Schema

These days, I'm regularly checking big JSON files and I was tired to have to check every field manually. So I've searched on internet if we can have a JSON file structure validation.

And I found json-schema.org!


What is it?

JSON Schema is a specification to validate the structure of the JSON file with a schema.

Schema example

{
    "type" : "object",
    "properties" : 
       "price" : {"type" : "number"},
       "name" : {"type" : "string"}
    }
}
Enter fullscreen mode Exit fullscreen mode

As you can see, a schema is a JSON file where you will define all your fields with their type. Then, you can use it with an implementation of a validator and check all your related files!


Validators

In the website, you can see a huge list of validators for a lot of languages/contexts.

Alt Text

The one that I like is a python one :

GitHub logo python-jsonschema / jsonschema

An implementation of the JSON Schema specification for Python

jsonschema

PyPI version Supported Python versions Build status ReadTheDocs status pre-commit.ci status Zenodo DOI

jsonschema is an implementation of the JSON Schema specification for Python.

>>> from jsonschema import validate

>>> # A sample schema, like what we'd get from json.load()
>>> schema = {
...     "type" : "object",
...     "properties" : {
...         "price" : {"type" : "number"},
...         "name" : {"type" : "string"},
...     },
... }

>>> # If no exception is raised by validate(), the instance is valid.
>>> validate(instance={"name" : "Eggs", "price" : 34.99}, schema=schema)

>>> validate(
...     instance={"name" : "Eggs", "price" : "Invalid"}, schema=schema,
... )                                   # doctest: +IGNORE_EXCEPTION_DETAIL
Traceback (most recent call last):
    ...
ValidationError: 'Invalid' is not of type 'number'
Enter fullscreen mode Exit fullscreen mode

It can also be used from the command line by installing check-jsonschema


Also, if you look a little bit further, you will see other tools to help you to create a schema.


Finally, I hope it will help you as much as it helps me.

AWS GenAI LIVE image

How is generative AI increasing efficiency?

Join AWS GenAI LIVE! to find out how gen AI is reshaping productivity, streamlining processes, and driving innovation.

Learn more

Top comments (0)

AWS GenAI LIVE image

How is generative AI increasing efficiency?

Join AWS GenAI LIVE! to find out how gen AI is reshaping productivity, streamlining processes, and driving innovation.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay