tutorial - validate json vs schema
Solo permite propiedades que están declaradas en el esquema JSON (3)
Estoy usando json-schema y quiero permitir que solo las propiedades declaradas en este archivo pasen la validación. Por ejemplo, si un usuario pasa una propiedad de "nombre" en su objeto json, este esquema no se publicará porque "nombre" no figura aquí como una propiedad.
¿Hay alguna función similar a "requerida" que solo permita que pasen las propiedades enumeradas?
{
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "Accounting Resource - Add Item",
"type": "object",
"properties": {
"itemNumber": {
"type":"string",
"minimum": 3
},
"title": {
"type":"string",
"minimum": 5
},
"description": {
"type":"string",
"minimum": 5
}
},
"required": [
"itemNumber",
"title",
"description"
]
}
Creo que lo que debes hacer para lograr esto es establecer propiedades additionalProperties
en falso. Vea la especificación here
Para su información, parece que v5 de la norma describirá un modo de validación de "prohibición de propiedades desconocidas" .
Entonces, en lugar de hacer que este requisito forme parte del formato (que, como dice Chris Pitman en los comentarios, daña la extensibilidad futura), simplemente puede indicarle a su validador que marque propiedades desconocidas como errores. Entonces, es como un modo de validación súper estricto que es útil para el desarrollador.
Algunos validadores ya soportan esto (por ejemplo, tv4 ):
var result = tv4.validateMultiple(data, schema, checkRecursive, banUnknownProperties);
Con esta herramienta, se debe usar checkRecursive
si sus datos pueden tener referencias circulares, y banUnknownProperties
hará exactamente lo que quiera, sin tener que usar "additionalProperties":false
.
Usar estrictamente validar las propiedades de un objeto: https://github.com/ruby-json-schema/json-schema#strictly-validate-an-objects-properties