Estoy usando json-schema y solo quiero permitir que las propiedades declaradas en este archivo pasen la validación. Por ejemplo, si un usuario pasa una propiedad de "nombre" en su objeto json, fallará este esquema porque "nombre" no aparece aquí como una propiedad.
¿Existe alguna función similar a "requerida" que solo permitirá 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"
]
}
json
jsonschema
ipengineer
fuente
fuente
Respuestas:
Creo que lo que debe hacer para lograr esto se establece
additionalProperties
en falso. Vea la especificación aquífuente
Para su información, parece que la v5 del estándar describirá un modo de validación de "prohibición de propiedades desconocidas" .
Entonces, en lugar de hacer que este requisito sea parte del formato (que, como dice Chris Pitman en los comentarios, daña la extensibilidad futura), simplemente puede indicarle a su validador que marque las propiedades desconocidas como errores. Entonces, es como un modo de validación súper estricto que es útil para dev.
Algunos validadores ya admiten esto (por ejemplo, tv4 ):
var result = tv4.validateMultiple(data, schema, checkRecursive, banUnknownProperties);
Con esta herramienta,
checkRecursive
debe usarse si sus datos pueden tener referencias circulares, ybanUnknownProperties
hará exactamente lo que desea, sin tener que usar"additionalProperties":false
.fuente
Dentro de su definición, proporcione:
"required": []
"additionalProperties": false
MANIFESTACIÓN:
sin
"additionalProperties": false
:con
"additionalProperties": false
:fuente