JSON 模式:验证对象的值,没有键
JSON Schema: verifying object's values, without keys
为了不混淆任何人,我将从验证数组开始...
关于数组,JSON Schema 可以检查 (((...)sub)sub) 数组的元素是否符合结构:
"type": "array",
"items": {
...
}
验证对象时,我知道我可以传递某些键及其相应的值类型,例如:
"type": "object",
"properties": {
// key-value pairs, might also define subschemas
}
但是如果我有一个 对象 我想用它来仅验证 值(没有键)怎么办?
我的真实案例是我正在配置按钮:可能有 edit、delete、添加 按钮等。它们都有特定的、严格的结构,我确实有 JSON 架构。但我不想局限于['edit', 'delete', 'add']
,将来可能会有publish
或print
。但我知道它们都会符合我的子模式。
每个按钮是:
BUTTON = {
"routing": "...",
"params": { ... },
"className": "...",
"i18nLabel": "..."
}
我有一个 对象(不是数组)按钮:
{
"edit": BUTTON,
"delete": BUTTON,
...
}
如何编写这样的 JSON 架构?有什么方法可以将 object
与 items
结合起来(我知道有对象属性和数组项关系)。
您可以为此使用 additionalProperties
。如果将 additionalProperties
设置为模式而不是布尔值,则任何未使用 properties
或 patternProperties
关键字显式声明的属性都必须与给定的模式相匹配。
{
"type": "object",
"additionalProperties": {
... BUTTON SCHEMA ...
}
}
http://json-schema.org/latest/json-schema-validation.html#anchor64
为了不混淆任何人,我将从验证数组开始...
关于数组,JSON Schema 可以检查 (((...)sub)sub) 数组的元素是否符合结构:
"type": "array",
"items": {
...
}
验证对象时,我知道我可以传递某些键及其相应的值类型,例如:
"type": "object",
"properties": {
// key-value pairs, might also define subschemas
}
但是如果我有一个 对象 我想用它来仅验证 值(没有键)怎么办?
我的真实案例是我正在配置按钮:可能有 edit、delete、添加 按钮等。它们都有特定的、严格的结构,我确实有 JSON 架构。但我不想局限于['edit', 'delete', 'add']
,将来可能会有publish
或print
。但我知道它们都会符合我的子模式。
每个按钮是:
BUTTON = {
"routing": "...",
"params": { ... },
"className": "...",
"i18nLabel": "..."
}
我有一个 对象(不是数组)按钮:
{
"edit": BUTTON,
"delete": BUTTON,
...
}
如何编写这样的 JSON 架构?有什么方法可以将 object
与 items
结合起来(我知道有对象属性和数组项关系)。
您可以为此使用 additionalProperties
。如果将 additionalProperties
设置为模式而不是布尔值,则任何未使用 properties
或 patternProperties
关键字显式声明的属性都必须与给定的模式相匹配。
{
"type": "object",
"additionalProperties": {
... BUTTON SCHEMA ...
}
}
http://json-schema.org/latest/json-schema-validation.html#anchor64