如果我有一个空白的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的解析器,也许是原因吗?
答案 0 :(得分:0)
JSON模式验证JSON。从技术上讲,尾部的逗号不是有效的JSON。但是,许多JSON会忽略它并允许使用逗号结尾。通常,在JSON中不要尾随逗号是比较安全的,因此您知道它可以与所有JSON解析器一起使用。
您正在针对空模式({}
)进行验证。空模式意味着对值的大小没有任何限制。有效JSON的值将对此模式有效。因此,让验证器报告不同结果的唯一原因是,如果他们不同意验证器是否为有效JSON。如果验证器使用允许尾随逗号的JSON解析器,则它将有效,否则将无效。