是否可以在 json 模式中定义两个属性之间的约束

Is it possible in json schema to define a constraint between two properties

我的模式中有两个字段 - 一个是必需的 属性,称为 "name",另一个是可选的(用于定义排序 属性),称为 "nameSort" 我想表达

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

是否可以用 JSON 模式表达这样的 "inter-element" 约束?我粗略阅读 JSON 此处的架构 http://json-schema.org/latest/json-schema-validation.html 说不。

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

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

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

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

老问题,但是现在可以使用 json 架构 v5/v6 结合使用 constant$data(JSON 指针或相对 JSON 指针)关键字。

示例:

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

其中 "1/password" 是一个相对 JSON 指针表示 "go up one level, then look up the key password"。