Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/473.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果传递的是数组而不是对象,则json模式将通过验证_Javascript_Jsonschema - Fatal编程技术网

Javascript 如果传递的是数组而不是对象,则json模式将通过验证

Javascript 如果传递的是数组而不是对象,则json模式将通过验证,javascript,jsonschema,Javascript,Jsonschema,这是我在应用程序中管理配置文件的模式: var ProfileJsonSchema = { properties: { Profiles: { optional: false, items: { optional: false, properties: { Email: {type: String}, FirstName: {type: String}, Zip: {t

这是我在应用程序中管理配置文件的模式:

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...
验证是可以的。 为什么?
是否有处理此类错误的解决方案?

这里可能有输入错误:

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

3个参数而不是2个?

十年后回答这个问题,json模式类型断言丢失。如果没有此选项,则任何类型都是有效的。properties断言看起来似乎只允许对象,但实际上,它只断言如果属性概要文件存在,那么它必须满足声明的子模式。因为Profiles甚至不是必需的属性,所以任何没有Profiles属性的对象都是有效的。

您选择了什么JSON模式实现?您能提供一个JSFIDLE示例吗?我已经用CommonJs版本和最新的kriszyp版本做了一些测试。我没有足够的能力在JSFIDLE上放置独立脚本: