不清楚propertyNames的含义

罗杰·科斯特洛

这是使用propertyNames的JSON模式:

{
    "$schema": "http://json-schema.org/draft-07/schema#",
    "type": "object",
    "propertyNames": {"enum": ["num", "name"]}
}

我“认为”该模式的含义是:符合条件的JSON实例必须是一个对象,并且该对象必须包含“ num”属性和“ name”属性;这两个属性的值未指定。那是正确的吗,该架构意味着什么?

我创建了这个实例:

{
   "num": 10
}

我对照架构验证了该实例,验证器说它是有效的。嗯,为什么?模式是否没有指定对象必须同时包含“ num”和“ name”?

杰森·德罗斯(Jason Desrosiers)

propertyNames是必须对所有对象的属性有效的架构。让我们看一个不太混乱的例子。

{
  "type": "object",
  "propertyNames": { "maxLength": 3, "minLength": 3 },
  "patternProperties": {
    "": { "type": "number" }
  }
}

这描述了一个对象,其中所有属性名称的长度必须为3,所有属性值的长度必须为数字。这是一个例子。

{
  "usd": 1,
  "eur": 0.86815,
  "gbp": 0.76504,
  "cad": "1.31004",  <= Invalid property value
  "xx": 1.11         <= Invalid property name
}

回到您的示例,有一个属性"num",该属性propertyNamesschema有效{ "enum": ["num", "name"] }因此,您的示例中的值是有效的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章