为什么“官方”json检查器不允许顶级原语?

时间:2016-11-01 11:31:35

标签: json parsing

JSON.org列出的实施中,我偶然发现JSON_checker

它的版权归JSON.org所有(这就是为什么我称之为“官方”)并且它似乎是最新的:2016-10-24标记在JSON_checker.c的顶部。< / p>

但是,我注意到状态转换表(JSON_checker.c中的第143行)定义了起始状态(称为GO),这样它只允许:

  • 空白
  • 开始对象({
  • 开始一个数组([

其他“原始”值类型怎么样:String,Number,Boolean,Null?

确实存在一个允许这些基元以及对象和数组的状态(称为VA的值)。但为什么不是最初的起始状态?

例如;一个简单的JSON文档,只包含:

null

根据JSON_checker认为不合法。

很明显,这是设计上的;测试套件中的第一个测试(fail1.json)明确指出:

"A JSON payload should be an object or array, not a string."

为什么会这样?我之前使用JSON的经验是,顶层允许任何JSON值。

0 个答案:

没有答案