Why do some JSON validators flag a boolean value as invalid JSON, and others as valid? That is, just true
or false
values (no object).
Valid:
Invalid:
Boolean values must be passed without quotes. Boolean is one of the types supported by json: https://www.json.org/json-en.html and the expected values are true or false, without quotes.
JSON is case-sensitive. SQL is case-insensitive, but names in SQL code are implicitly uppercase.
The simplest way to check if JSON is valid is to load the JSON into a JObject or JArray and then use the IsValid(JToken, JsonSchema) method with the JSON Schema. To get validation error messages, use the IsValid(JToken, JsonSchema, IList<String> ) or Validate(JToken, JsonSchema, ValidationEventHandler) overloads.
The validator you link to validates the JSON string existing of a mere true
as invalid according to RFC 4627, which dictates that the root of a JSON string is to be an array or object:
A JSON text is a serialized object or array.
JSON-text = object / array
An unwrapped value such as true
or "foo"
or 42
is not JSON according to that RFC.
The other RFCs it can validate against, RFC 7159 and RFC 8259, deem the above examples valid as it does not constrain a JSON text to objects or arrays, but also allows values:
A JSON value MUST be an object, array, number, or string, or one of the following three literal names:
false null true
And because the former (RFC 4627) is obsoleted by the latter two (RFC 7159 respectively 8259), true
is a valid JSON string.
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