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