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:
{
"stats": "null"
}
"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:
{
stats: null
}
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 that null
is not the same as "null"
.
First of all, null is not a String. So try using below in your schema--
"stats": {
"id": "http://jsonschema.net/stats#",
"type": "string",
"maxLength": 5,
"minLength": 2,
"additionalProperties": false,
"maxProperties": 1,
"not": {"type": null}
}
But, in the example snippet you have mentioned something like below--
{
"stats": "null"
}
So, if you really wanted null to be not allowed in your file, then your example file should look like {
"stats": null
}
Along schema i have provided.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With