Only allow properties that are declared in JSON schema
Solution 1:
I believe what you need to do to achieve this is set additionalProperties
to false. See the specification here
Solution 2:
Inside your definition provide:
- all required fields inside
"required": []
- and set
"additionalProperties": false
DEMO:
without "additionalProperties": false
:
with "additionalProperties": false
:
Solution 3:
FYI - it looks like v5 of the standard will describe a "ban unknown properties" validation mode.
So instead of making this requirement part of the format (which as Chris Pitman says in the comments, damages future extensibility), you can simply instruct your validator to flag unknown properties as errors. So, it's like a super-strict validation mode which is useful for dev.
Some validators already support this (e.g. tv4):
var result = tv4.validateMultiple(data, schema, checkRecursive, banUnknownProperties);
With this tool, checkRecursive
should be used if your data might have circular references, and banUnknownProperties
will do exactly what you want, without having to use "additionalProperties":false
.