json架构是:
"Deck": {
"type": "array",
"items": {
"$ref": "#/definitions/Card"
},
"minItems": 52,
"maxItems": 52,
"uniqueItems": true
},
那么,我怎么能禁止这个:
let d = new Deck();
d.garbageField = 'fdsf';
使用我的架构?
答案 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本身禁止它。