1

我正在接受有关数据库表架构的信息。它包含有关表列的信息。因此,很明显,这些列具有nametype 属性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指定。这可以通过当前的 json-schema 规范和实现来实现吗?在这方面我没有找到任何方向。uniqueKeycolumns

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

...
"attributes":
{
    "type": "array",
    "items":
    {
        "type": "object",
        "properties": 
        {
            "name": {"type": "string"},
            ...
        },
        "required": ["name",...],
        ...
    }
},
"uniqueKey": 
{
    ... ** here is where I have stuck ** ...
}
...
4

1 回答 1

2

不,当前版本的 JSON Schema 无法做到这一点。没有用于引用正在验证的数据中的值的机制。同样,也无法验证具有属性startDateendDate位置startDate小于的对象endDate

有一个提议来解决这个限制,正在考虑在未来的 JSON Schema 草案中使用。因此,您将来也许可以这样做,但现在不行。

请参阅问题 51$data中的 JSON Schema 规范讨论:类型增强:

于 2015-06-26T18:48:31.493 回答