布尔值是否有效JSON

use*_*636 17 validation json boolean

为什么有些JSON验证器将布尔值标记为无效JSON,其他有效?也就是说,只是truefalse值(没有对象).

有效:

无效:

Cod*_*ter 32

您链接的验证程序true根据RFC 4627验证存在的仅作为无效的JSON字符串,该字符串规定JSON字符串的根将是一个数组或对象:

JSON文本是序列化对象或数组.

 JSON-text = object / array
Run Code Online (Sandbox Code Playgroud)

展开的值,诸如true"foo"42不JSON 根据该RFC.

它可以验证的另一个RFC RFC 7159认为上述示例是有效的,因为它不会将JSON文本约束到对象或数组,但也允许:

JSON值必须是对象,数组,数字或字符串,或以下三个文字名称之一:

 false null true
Run Code Online (Sandbox Code Playgroud)

并且因为前者(RFC 4627)被后者(RFC 7159)淘汰,所以true 有效的JSON字符串.

  • 今天快速更新:最新的 RFC (https://datatracker.ietf.org/doc/html/rfc8259#section-3) 将 `true` 定义为有效的 JSON (3认同)