Validando JSON com JSON Schema em Python

Rafael Amaral
3 min readAug 1, 2018

--

Fala galera, tudo tranquilo!? Recentemente precisei validar o formato e algumas outras informações em um JSON que era enviado como resposta de um serviço que eu estava testando.

Fui apresentado ao JSON Schema pelo Júlio de Lima (Valeu mestre!), comecei a usar, achei sensacional e resolvi escrever esse post mostrando um pouco sobre como validar JSON de uma maneira muito prática.

O JSON Schema fornece um vocabulário para que possamos descrever e validar documentos JSON. Com ele é possível prover uma documentação clara, validar a estrutura e os dados contidos no JSON.

Existem diversas implementações do JSON Schema segundo o site da ferramenta:

Escolhi para esse tutorial o Python por ser uma linguagem que tenho utilizado ultimamente, mas fiquem a vontade para escolher e aplicar as validações em qualquer uma das linguagens disponibilizadas.

A primeira coisa que vamos precisar é instalar o Python, caso não tenha instalado na sua máquina, pode utilizar o tutorial para Windows ou Linux.

Com o Python instalado vamos criar um arquivo chamado jsonSchemaSample.py e escrever o seguinte código:

Esse é um exemplo bem simples de como utilizar o JSON Schema em Python.

A primeira coisa que fazemos no arquivo é definir a utilização da biblioteca JSON Schema. Caso você não tenha baixado a biblioteca, na hora de executar o teste poderá ter um erro “ModuleNotFoundError: No module named ‘jsonschema’ ”, para resolver isso basta executar o comando “pip install jsonschema” no terminal.

Após a importação da biblioteca, definimos qual deve ser o Schema do JSON que iremos testar, basicamente um schema define a estrutura que é válida para representar os dados dentro do nosso contexto, utilizaremos esse schema definido para verificar se o que estamos recebendo está de acordo com essa estrutura.

Estamos usando um Schema que define como os dados de uma pessoa devem estar estruturados para o nosso contexto de uso, esses dados devem possuir o nome e sobrenome da pessoa (campos obrigatórios), uma idade cujo valor não pode ser abaixo de 0 (“minimum”: 0) e um estado civil que nesse caso deve ser um dos valores estipulados (“enum”: [“Solteirx”, “Casadx”, “Divorciadx” ]). Além disso, validamos os tipos de dados de cada campo esperamos que os campos “firstName”, “lastName” e “maritalStatus” possuam dados do tipo string e o campo “age” deve conter dados no formato inteiro.

A função validate recebe dois parâmetros: o JSON que queremos validar e o Schema esperado. Em caso de erro é apresentada uma exceção, senão for apresentado nada então o JSON é valido. Nesse nosso exemplo a primeira validação irá passar e a segunda irá gerar um erro, pois ele espera um valor do tipo inteiro no campo age, entretanto, é passado um valor do tipo string. A execução irá parar na primeira falha encontrada, se quiser simular os outros erros, basta comentar a linha em que você não quer que o teste pare e executar novamente o script.

Podemos testar isso executando no terminal o comando “python jsonSchemaSample.py”, para funcionar é preciso estar no mesmo local onde você salvou o arquivo.

Exemplo de execução com cada erro

Bom galera esse foi um pequeno exemplo do que podemos fazer com o JSON Schema, a biblioteca permite que consigamos fazer diversas combinações e validações para garantir que o JSON está conforme esperado. As possibilidades de utilização do JSON Schema são inúmeras. Enjoy it!

Se tiver alguma dúvida, sugestão ou viu algum erro no texto, posta ai nos comentários! Vlw!!

--

--

Rafael Amaral

Soteropolitano, QA, tirado a fotógrafo e corredor, apaixonado por viagens e comida — principalmente viajar para comer :p