如果传递数组而不是对象,json-schema将通过验证

时间:2012-02-01 14:22:23

标签: javascript jsonschema

这是我在我们的应用程序中管理配置文件的架构:

var ProfileJsonSchema = {
  properties: {
    Profiles: {
      optional: false,
      items: {
        optional: false,
        properties: {
          Email: {type: String},
          FirstName: {type: String},
          Zip: {type: String},
          City: {type: String}
}}}};

和我的数据

[{}]

和要测试的代码

validation = Validate([{}], ProfileJsonSchema);     
if (!validation.valid) {
  return;
}
// do something...

验证还可以。 为什么? 有没有解决方案来处理这类错误?

2 个答案:

答案 0 :(得分:0)

这里可能有一个错字:

validation = Validate([{}], , ProfileJsonSchema); 

3个参数而不是2?

答案 1 :(得分:0)

为了在十年后回答这个问题,缺少 json 模式 type 断言。如果没有这个,任何类型都是有效的。 properties 断言可能看起来只允许对象,但实际上,它只断言 if a property Profiles exists then it must satisfy the declared subschema。由于 Profiles 甚至不是必需的属性,因此任何没有 Profiles 属性的对象也是有效的。