6

我的架构中有两个字段 - 一个是名为“name”的必需属性,另一个是名为“nameSort”的可选(用于定义排序属性),我想表达

如果定义了“nameSort”字段,那么“name”字段也应该定义为相同的值。

是否可以用 JSON 模式表达这样的“元素间”约束?我在这里粗略地阅读了 JSON Schema http://json-schema.org/latest/json-schema-validation.html说不。

4

2 回答 2

9

老问题,但现在可以使用constant$data(JSON 指针或相对 JSON 指针)关键字的组合使用 json 模式 v5/v6 来完成。

例子:

"properties": {
    "password": { "type": "string" },
    "password_confirmation": { "const": { "$data": "1/password" } }
}

"1/password"说“上一级,然后查找密钥密码”的相对 JSON 指针在哪里。

于 2016-12-16T20:34:52.197 回答
5

您可以表达一个属性必须在另一个属性存在时定义,例如:

{
    "type": "object",
    "dependencies": {
        "nameSort": ["name"]
    }
}

但是,您不能指定两个属性必须具有相等的值。

另外,如果它总是相等的,为什么还要有一个单独的属性呢?如果它总是相等的,你能不能只用一个布尔标志来减少冗余?

于 2015-01-12T18:13:16.060 回答