确保对象字段在Json Schema的另一个字段中具有值

时间:2019-06-03 14:39:24

标签: json schema jsonschema

我正在尝试表达对象及其之间的关系。 每个对象都有一个ID,每个关系都引用2个对象ID。 我想确保每个关系都引用现有的对象ID。您可以使用Json Schema做到这一点吗?

{
    "$schema": "http://json-schema.org/draft-07/schema#",
    "type": "object",
    "properties": {
        "Objects": {
            "type": "array",
            "items": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    }
                }
            }
        },
        "Relations": {
            "type": "array",
            "items": {
                "type": "object",
                "properties": {
                    "objId1": {"type": "integer"}, // I'd like these
                    "objId2": {"type": "integer"}  // Two fields to reference an existing Objects.id
                }

            }
        },
    },
}

2 个答案:

答案 0 :(得分:1)

否,您无法使用JSON架构执行此操作。抱歉。

听起来这是一个数据库。 您应该考虑使用数据库级别的约束进行这种验证。

答案 1 :(得分:0)

JESS(JSON扩展结构模式)支持此处所需类型的文档内参照完整性约束。  尤其参见https://bitbucket.org/pkoppstein/jess/wiki/Home#markdown-header-specifying-within-document-referential-integrity-constraints

顺便说一句,也可以通过将单独的文档合并为复合文档来处理文档之间的参照完整性约束(如果有些笨拙)。

免责声明:我是JESS规范和验证模块的作者。