【问题标题】:Is the a way to validate object references within JSON with JSON schema?是一种使用 JSON 模式验证 JSON 中的对象引用的方法吗?
【发布时间】:2020-08-04 19:43:08
【问题描述】:

当我们定义对象并在 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 jsonschema json-schema-validator


【解决方案1】:

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

【讨论】:

  • 谢谢。我相信我得到了同样的答案。实际上,我在 2016 年发现了一些关于为此目的引入“$data”关键字的讨论,但显然它没有包含在标准中。
  • 去年我们发布了 JSON Schema 草案2019-09。我们引入了“词汇表”的概念,这可能会在以后导致能够做你所要求的事情,或者像 $data 之类的东西,但现在还不行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-27
  • 1970-01-01
  • 1970-01-01
  • 2016-11-21
相关资源
最近更新 更多