validar o json contra o esquema em javascript
Pergunta:
Existe uma forma simples ou nativa de JavaScript validar um script JSON contra um esquema JSON?
Encontrei muitas bibliotecas no Github, mas nenhuma solução nativa/simples. O EcmaScript não tem uma especificação para isto? e nenhum dos navegadores (ou nodejs) tem uma maneira de validar JSON nativamente?contexto da questão:
Tenho um esquema muito complexo que desenvolvi. É suposto funcionar juntamente com um script que requer que os dados JSON passaram para ele para cumprir com o esquema. 12
2 answers
Simplesmente, não.
Havia uma coisa chamada JSON Schema , que era um rascunho da Internet que expirou em 2013. Os rascunhos da Internet são a primeira fase para produzir uma norma da Internet . Veja mais sobre ele no site oficial {[[10]}, pois parece potencialmente ainda estar ativamente desenvolvido, embora não seja (ao meu conhecimento) em uso generalizado.
Um exemplo do esquema:
{
"$schema": "http://json-schema.org/schema#",
"title": "Product",
"type": "object",
"required": ["id", "name", "price"],
"properties": {
"id": {
"type": "number",
"description": "Product identifier"
},
"name": {
"type": "string",
"description": "Name of the product"
},
"price": {
"type": "number",
"minimum": 0
},
"tags": {
"type": "array",
"items": {
"type": "string"
}
},
"stock": {
"type": "object",
"properties": {
"warehouse": {
"type": "number"
},
"retail": {
"type": "number"
}
}
}
}
}
Validará este exemplo JSON:
{
"id": 1,
"name": "Foo",
"price": 123,
"tags": [
"Bar",
"Eek"
],
"stock": {
"warehouse": 300,
"retail": 20
}
}
EDIT Como todos (mais ou menos) fazem a mesma coisa e têm sintaxes muito semelhantes, o desempenho deve ser da maior preocupação. Veja aqui para uma comparação do desempenho de JSON validator-o vencedor éajv , que é pessoalmente o que eu uso por esta razão.
7
Author: Nick Bull, 2016-08-13 20:11:07
Parece haver pelo menos uma solução JS pura. https://github.com/tdegrunt/jsonschema disponível via npm ( https://www.npmjs.com/package/jsonschema não sou um colaborador, embora aprecie o seu trabalho.
2
Author: Joe Steele, 2021-01-05 17:22:16