基于引用对象值的条件JSON模式验证

rsl1atfo  于 2023-08-08  发布在  其他
关注(0)|答案(1)|浏览(102)

假设我有一个JSON对象,如下所示:

{
        "sources": [
            {
                "id": "foo",
                "type": "a"
            },
            {
                "id": "bar",
                "type": "b"
            }
        ],
        "data": [
            {
                "source-id": "foo",
                "a-attribute": 10
            },
            {
                "source-id": "bar",
                "b-attribute": 20
            }
        ]
    }

字符串
这里,data对象中的source-id必须等于source对象中的id s之一。
1.如何在JSON Schema中表达这种关系?
1.如何根据引用的sources对象的type属性值为data对象执行conditional subschema application操作?
在2.上扩展一点,例如,当引用的sourcetypea时,我必须指定a-attribute,而不能指定b-attribute
当引用的源的typeb时,我应该被迫指定b-attribute而不是a-attribute
这可以通过JSON Schema实现吗?或者我需要编写自定义验证代码吗?

dluptydi

dluptydi1#

我在JSON Schema Slack中被告知,JSON Schema今天不能表达关系完整性约束。
因此,我想要做的是不能用模式实现的,而是需要单独的验证。

相关问题