Este projeto é um validador de JSON Schema para a linguagem Harbour, permitindo que desenvolvedores validem dados JSON conforme esquemas definidos, garantindo a integridade e conformidade dos dados em aplicações Harbour.
- Validação de Tipos Básicos: Suporte para
string,number,integer,boolean,object,arrayenull. - Validação de Strings: Implementação das palavras-chave
minLength,maxLengthepattern. - Validação de Números: Suporte para
minimum,maximum,exclusiveMinimum,exclusiveMaximumemultipleOf. - Validação de Arrays: Implementação das palavras-chave
minItems,maxItems,uniqueItems,contains,minContains,maxContains,itemseprefixItems. - Validação de Objetos: Suporte para
required,properties,dependencies,propertyNames,minProperties,maxProperties - Validação de Enumerações: Implementação da palavra-chave
enum. - Validação de Formatos: Implementação da palavra-chave
formatpara validar formatos específicos, comoemail,date-time,ipv4, entre outros. - Resolução de Referências (
$ref): Capacidade de resolver referências internas e externas dentro dos schemas. - Mensagens de Erro Detalhadas: Fornecimento de mensagens de erro claras e específicas sobre falhas de validação, incluindo o caminho completo do nó onde ocorreu a inconsistência, como "root.pessoa.idade", facilitando a identificação de problemas em dados complexos.
- Suporte Completo para Combinações Lógicas: Implementar as palavras-chave
allOf,anyOfeoneOfpara validações condicionais. - Suporte para
if,theneelse: Permitir validações condicionais baseadas na estrutura dos dados. - **Suporte para
patternProperties,additionalPropertiesedependentRequiredpara validar a estrutura e o conteúdo de objetos JSON.
- Pré-requisitos: Certifique-se de ter o Harbour instalado.
- Clone o Repositório:
git clone https://github.com/naldodj/naldodj-hb-jsonschema-validator.git - Compile o Código: Navegue até o diretório
src/coree compile o arquivojsonschema_validator.prgusando o compilador Harbour. - Execute os Testes: No diretório
src/tests, compile e executejsonschema_validator_test.prgpara validar a funcionalidade do validador.
#include "hbclass.ch"
#include "jsonschema_validator.prg"
FUNCTION Main()
LOCAL oValidator := JSONSchemaValidator():New('{ "type": "object", "properties": { "name": { "type": "string" }, "age": { "type": "number" } }, "required": ["name", "age"] }')
LOCAL cJSONData := '{ "name": "John", "age": 30 }'
IF oValidator:Validate(cJSONData)
? "JSON válido!"
ELSE
? "JSON inválido:"
AEVAL(oValidator:GetErros(), {|e| ? e })
ENDIF
RETURNEste exemplo cria um esquema que requer um objeto com propriedades name (string) e age (número), ambas obrigatórias. Em seguida, valida um JSON conforme esse esquema.
Os testes estão localizados no diretório src/tests e cobrem diversos cenários de validação, garantindo a robustez e a precisão do validador.
Contribuições são bem-vindas! Sinta-se à vontade para abrir issues ou pull requests no repositório GitHub.
Este projeto está licenciado sob a Apache-2.0.
