这是一种使用JSON模式验证JSON中对象引用的方法吗?

这是一种使用JSON模式验证JSON中对象引用的方法吗?,json,jsonschema,json-schema-validator,Json,Jsonschema,Json Schema Validator,让我们举一个简单的例子,定义对象并在JSON中单独使用它们。例如,我们定义了几个地址,并使用它们定义了几个路由: { "points": [ { "Name": "p1", "Street": "street1", "House": 11, "Ap&

让我们举一个简单的例子,定义对象并在JSON中单独使用它们。例如,我们定义了几个地址,并使用它们定义了几个路由:

{
    "points": [
        {
            "Name": "p1",
            "Street": "street1",
            "House": 11,
            "Ap": 111
        },
        {
            "Name": "p2",
            "Street": "street2",
            "House": 22,
            "Ap": 222
        },
        {
            "Name": "p3",
            "Street": "street3",
            "House": 33,
            "Ap": 333
        },
        {
            "Name": "p4",
            "Street": "street4",
            "House": 44,
            "Ap": 444
        },
        {
            "Name": "p5",
            "Street": "street5",
            "House": 55,
            "Ap": 555
        }

    ],
    "routes": [
        [
            "p1",
            "p2",
            "p3",
            "p4"
        ],
        [
            "p3",
            "p2",
            "p1"            
        ],
        [
            "p4",
            "p2",
            "p3",
            "p1"
        ]
    ]
}
用JSON模式验证所有路由都引用定义的地址的正确方法是什么(如果有的话)?对不起,我的问题太新了。
谢谢,

您不能使用JSON模式来验证JSON中表示的关系数据是否具有引用完整性。

嗨,Oleg。这是一个有趣的案例,因为您用JSON表示一个图形结构。我认为不可能验证从路线到点的引用(假设可以有任意数量的点)。你可以定义一个正则表达式,但当然这只会捕获一些错误。不,这是不可能的。您必须在代码中执行此操作。谢谢。我相信我得到了同样的答案。实际上,我在2016年发现了一些关于为此目的引入“$data”关键字的讨论,但显然它没有包含在标准中。去年,我们发布了JSON模式草案
2019-09
。我们引入了“词汇表”的概念,这可能会导致以后能够做你想做的事情,或者像$data之类的事情,但现在还没有。