【问题标题】:How can this be a JSON Schema这怎么可能是 JSON Schema
【发布时间】:2020-05-25 21:09:50
【问题描述】:

我正在尝试验证 JSON Schema 实际上是 JSON Schema,而不是实例,正如我所读的那样,资源是针对元模式进行验证的,例如:

我尝试了不同的验证库,json-schema-validator 用于 Java,jsonschema 用于 Python 以获得更多保证,但我不断获得有趣的断言,即这是一个有效的 JSON Schema 实例。

{
    "hey" : {
        "you" : {
            "how" : {
                "dyd" : "Very well, ty"
            }
        }
    }
}

我来这里是因为我显然有一些很大的误解或误解,因为我无法理解如何将清晰的 JSON 实例(它声明没有数据类型)验证为 JSON Schema 实例。

我想解决的最初问题,正如我在开头所说的那样,是如何验证 JSON Schema,但是如果任何 JSON 有效实例太有效 JSON 模式(因为结果抛出),如何断言这个?

【问题讨论】:

  • 或许可以在这里多选几个标签。例如。 json-schema 而不是 json - 下次可能会吸引更快的响应。 ????

标签: json validation jsonschema


【解决方案1】:

简短的回答是:JSON Schema 是为可扩展性而设计的。这意味着它允许添加任何类型的附加属性,只要它们不与已知/预期的关键字冲突。

在您的情况下,hey 属性肯定不是已知的关键字,即它只是在验证期间被忽略。这为您留下了有效的 JSON Schema {},它允许任何类型。

那么如何确保某些东西实际上是 JSON Schema? 这取决于您要定义该术语的范围。

  1. 您可以强制要求顶层需要定义一个特定的$schema 版本。
  2. 您可以强制要求至少在顶层有一个有效的type 属性。

【讨论】:

    猜你喜欢
    • 2018-11-06
    • 1970-01-01
    • 1970-01-01
    • 2011-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 2012-04-07
    相关资源
    最近更新 更多