根据输入json数据中的其他属性的值检查属性的值

问题描述 投票:0回答:1

我接受有关数据库表架构的信息。它包含有关表列的信息。因此,很明显,这些列具有name类型的string属性。但是,这些名称不必来自预选名称列表。它们可以是用户输入的任何内容。现在我还想接受表的唯一键,它可以是复合键,只包含用户输入的列。换句话说,唯一键可以由用户在json数据中提供的列组成。

因此,技术上我需要的是:动态填充的字符串枚举(来自输入json数据),它将是表示唯一键的数组项的类型。因此,数组的每个元素都是列名。

例如,在json数据下面

"columns": 
{
    "col1": "val1",
    "col2": "val2",
    "col3": "val3"
},
"uniquelKey": ["val1","val2"]

是有效的,但是

"columns": 
{
    "col1": "val1",
    "col2": "val2",
    "col3": "val3"
},
"uniquelKey": ["val1","val4"]

是无效的,因为在val4中指定的uniqueKey不存在于columns列表中。这是否可以通过当前的json-schema规范和实现来实现?我没有在这方面找到任何方向。

我当前的json架构如下所示:

...
"attributes":
{
    "type": "array",
    "items":
    {
        "type": "object",
        "properties": 
        {
            "name": {"type": "string"},
            ...
        },
        "required": ["name",...],
        ...
    }
},
"uniqueKey": 
{
    ... ** here is where I have stuck ** ...
}
...
json jsonschema json-schema-validator
1个回答
2
投票

不,使用当前版本的JSON Schema无法做到这一点。没有用于引用正在验证的数据中的值的机制。类似地,没有办法验证具有startDateendDate属性的对象,其中startDate小于endDate

有一项建议旨在解决未来JSON架构草案正在考虑的此限制。所以,您将来可能会这样做,但现在不行。

请参阅issue 51: type enhancement: $data上的JSON Schema规范讨论。

© www.soinside.com 2019 - 2024. All rights reserved.