我的架构中有两个字段 - 一个是名为“name”的必需属性,另一个是名为“nameSort”的可选(用于定义排序属性),我想表达
如果定义了“nameSort”字段,那么“name”字段也应该定义为相同的值。
是否可以用 JSON 模式表达这样的“元素间”约束?我在这里粗略地阅读了 JSON Schema http://json-schema.org/latest/json-schema-validation.html说不。
我的架构中有两个字段 - 一个是名为“name”的必需属性,另一个是名为“nameSort”的可选(用于定义排序属性),我想表达
如果定义了“nameSort”字段,那么“name”字段也应该定义为相同的值。
是否可以用 JSON 模式表达这样的“元素间”约束?我在这里粗略地阅读了 JSON Schema http://json-schema.org/latest/json-schema-validation.html说不。
老问题,但现在可以使用constant
和$data
(JSON 指针或相对 JSON 指针)关键字的组合使用 json 模式 v5/v6 来完成。
例子:
"properties": {
"password": { "type": "string" },
"password_confirmation": { "const": { "$data": "1/password" } }
}
"1/password"
说“上一级,然后查找密钥密码”的相对 JSON 指针在哪里。
您可以表达一个属性必须在另一个属性存在时定义,例如:
{
"type": "object",
"dependencies": {
"nameSort": ["name"]
}
}
但是,您不能指定两个属性必须具有相等的值。
另外,如果它总是相等的,为什么还要有一个单独的属性呢?如果它总是相等的,你能不能只用一个布尔标志来减少冗余?