I wanted to prevent a json filed from allowing null as a valid value for it. Tried using the keyword not, but no luck.
Want the below json to be validated as false, as the field stats as value as null.
{
"stats": "null"
}
please find my schema below:-
{
"$schema": "http://json-schema.org/draft-04/schema#",
"id": "http://jsonschema.net#",
"type": "object",
"additionalProperties": false,
"maxProperties": 1,
"properties": {
"stats": {
"id": "http://jsonschema.net/stats#",
"type": "string",
"maxLength": 5,
"minLength": 2,
"additionalProperties": false,
"maxProperties": 1,
"not": {"type": "null"}
}
},
"required": [
"stats"
]
}
Though i gave "not": {"type": "null"}, it still validated successfully.
Wow. So much confusion here.
The problem is simple:
"null"
is a string, thus it’s valid (because you allow strings). This would not be allowed by your schema, which works as you expect:The answer from Ashish Patil is wrong: in your schema (not your data), when you are specifying the type, the type name is a string. Specifying
"not": {"type": null}
is not valid. You could specify"not": {"type": "null"}
, but that would be redundant as the earlier"type": "string"
already implies that.The accepted answer from jruizaranguren works because it doesn’t allow the string
"null"
. It doesn’t address the core confusion thatnull
is not the same as"null"
.