【问题标题】:JSON Schema to prohibit an Array object to have propertiesJSON Schema 禁止 Array 对象具有属性
【发布时间】:2017-05-22 06:24:15
【问题描述】:

json 架构是:

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

那么,我该如何禁止:

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

使用我的架构?

【问题讨论】:

  • 为什么不创建class
  • 因为我需要数组?
  • 您可以将 AdditionalItems 设置为 false - 但我认为 Card 的 $schema 是什么很重要。

标签: javascript json jsonschema


【解决方案1】:

我想你在找"additionalProperties": false

【讨论】:

    【解决方案2】:

    我认为这个问题与 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 对象也不会有它们。因此,当针对 Schema 验证 JSON 时,它不会到达这一点。

    所以你的问题的答案是:

    您不能在 JSON 架构中这样做,因为它被 JSON 本身所禁止。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-29
      • 2022-12-17
      • 2020-07-18
      • 2015-11-09
      • 2020-06-18
      • 2018-10-24
      • 1970-01-01
      • 2020-10-07
      相关资源
      最近更新 更多