空白架构和验证

时间:2018-09-30 12:21:20

标签: jsonschema json-schema-validator

如果我有一个空白的JSON模式,例如

{}

,我尝试验证以下数据:

{
   "hello": "world",
}

验证会成功吗? (请注意尾随逗号)。

我尝试在Java中使用everit json模式验证器,

JSONObject rawSchema = new JSONObject(new JSONTokener("{}"));

Schema schema = SchemaLoader.load(rawSchema);

schema.validate(new JSONObject("{\"hello\" : \"world\",}"));

并且似乎可以验证。

有趣的是,一些在线验证了JSON

https://www.jsonschemavalidator.net/

其他人没有

https://json-schema-validator.herokuapp.com/

稍后在验证之前使用Jackson的解析器,也许是原因吗?

1 个答案:

答案 0 :(得分:0)

JSON模式验证JSON。从技术上讲,尾部的逗号不是有效的JSON。但是,许多JSON会忽略它并允许使用逗号结尾。通常,在JSON中不要尾随逗号是比较安全的,因此您知道它可以与所有JSON解析器一起使用。

您正在针对空模式({})进行验证。空模式意味着对值的大小没有任何限制。有效JSON的值将对此模式有效。因此,让验证器报告不同结果的唯一原因是,如果他们不同意验证器是否为有效JSON。如果验证器使用允许尾随逗号的JSON解析器,则它将有效,否则将无效。