JSON Schema禁止Array对象具有属性

时间:2017-05-22 06:24:16

标签: javascript json jsonschema

json架构是:

"Deck": {
  "type": "array",      
  "items": {
    "$ref": "#/definitions/Card"
  },
  "minItems": 52,
  "maxItems": 52,
  "uniqueItems": true
},

那么,我怎么能禁止这个:

let d = new Deck();
d.garbageField = 'fdsf';

使用我的架构?

2 个答案:

答案 0 :(得分:0)

我认为您正在寻找"additionalProperties": false

答案 1 :(得分:0)

我认为这个问题与JSON Schema无关,因为它是纯JavaScript问题。

JSON模式验证JSON文档而不是JavaScript对象。而JSON本身并不允许您在阵列上添加其他属性。

让我向您展示一个在Chrome控制台中运行的JavaScript代码的简单示例:

let d = ['a', 'b', 'c'];
d.e = 'test';
JSON.stringify(d);

将输出:

"["a","b","c"]"

因此,即使JavaScript允许您将其他属性放入数组中,生成的JSON对象也不会拥有它们。因此,当JSON针对Schema进行验证时,它无法达到这一点。

所以问题的答案是:

您无法在JSON模式中执行此操作,因为JSON本身禁止它。