JSON 架构:使用字段值作为必填字段名称

JSON schema: Use field value as required field name

我需要为 JSON 定义一个 JSON 架构,其中 field/key 被称为前一个字段的值。示例:

{
  "key1": "SOME_VALUE",
  "SOME_VALUE": "..."
}
{
  "key1": "ANOTHER_VALUE",
  "ANOTHER_VALUE": "..."
}

另外,第二个字段应该在必填字段中。 我一直在四处寻找,但不确定 JSON 架构是否提供此类功能。也许一些高级语义检查?

感谢您的帮助

唯一可以做到这一点的方法是事先知道这些值,但看起来这对您来说是不可能的。这需要在您的业务逻辑验证中而不是格式验证中。

所以,感谢 Relequestual 的建议,我设法找到了解决方案。

约束:"key1" 的可能值需要是有限的并且事先已知

假设我们需要一个 JSON 模式来验证 JSON :

  1. 需要字符串属性 "required_simple_property1" 和 "required_simple_property2"。
  2. 需要 属性 "key1" 作为具有 3 个可能值的枚举 ["value1"、"value2"、"value3"].
  3. 需要第三个 属性,其键必须是 key1 取的值。

这可以通过如下模式来完成:

"oneOf": [
    {
        "required": [
            "required_simple_property1",
            "required_simple_property2",
            "value1"
        ],
        "properties": {
            "key1": {
                "type": "string",
                "const": "value1"
            }
        } 
    },
    {
        "required": [
            "required_simple_property1",
            "required_simple_property2",
            "value2"
        ],
        "properties": {
            "key1": {
                "type": "string",
                "const": "value2"
            }
        } 
    },
    {
        "required": [
            "required_simple_property1",
            "required_simple_property2",
            "value3"
        ],
        "properties": {
            "key1": {
                "type": "string",
                "const": "value3"
            }
        } 
    }
],
"properties": {
    "required_simple_property1": {
        "type": "string"
    },
    "required_simple_property2": {
        "type": "string"
    },
    "value1": {
        ... (anything)
    },
    "value2": {
        ... (anything)
    },
    "value3": {
        ... (anything)
    },
}