【问题标题】:2 JSON Schema Questions, Is the type keyword required and what is the differencen between Core and Validation2 JSON Schema 问题,是否需要 type 关键字,Core 和 Validation 有什么区别
【发布时间】:2021-06-10 00:34:46
【问题描述】:

好的,我一直在上网,但我找不到明确回答以下问题的答案。

“类型关键字是必需的吗?”如果不是,那么对于所有神圣的事物,请某人以极其详细的方式描述在未提供时会发生什么,以验证方式。

我找到了这个...

http://json-schema.org/draft/2020-12/json-schema-validation.html#rfc.section.6.1.1

但我发现了很多其他可以定义架构对象但没有此关键字的示例。

例如,我发现了这个带有测试示例的 repo。

https://github.com/json-schema-org/JSON-Schema-Test-Suite/blob/master/tests/draft7/additionalProperties.json

他们在第 5 行有一个模式。它没有类型,但看起来他们在谈论一个对象。同样在第 21 - 25 行,他们描述了一个数组有效的测试。

谁能帮我澄清一下。

同样对于第二个,......这里定义的Core和Validation有什么区别......

https://json-schema.org/specification.html

在此感谢您

【问题讨论】:

    标签: validation schema jsonschema


    【解决方案1】:

    1。 type 关键字是必需的吗?

    没有。关键字将响应它们设计的类型的实例,否则它们将被忽略(静默通过验证)。所以

    { "minimum": 5 }
    

    将通过任何东西,只要它不是小于 5 的数字。对象、字符串、数组等都可以通过。但是只要你介绍一个数字,这个关键字就会变得感兴趣,它会做它的事情。

    每个关键字都有一个类型或一组它响应的类型。 type 是回应所有这些的人之一。

    2。有什么不同的规格?

    我们(规范作者)认为,如果我们将规范分成两部分,事情会变得更简单:一部分用于模式构造关键字(例如$id$schemaallOfproperties、等),一个用于值验证和注释(例如minimumminLength 等)。但是,确实意味着您必须查看多个文档才能创建验证器。

    它还允许我们在没有其他的情况下修改其中一个,尽管我们从未这样做过。

    这个拆分是在几次迭代之前完成的,我们只是保留它,因为它似乎运作良好。

    【讨论】:

    • 重要的是要记住,JSON Schema 是一种基于约束的词汇,而不是一种数据定义语言。这不像在数据库中定义表,而是在现有表上定义额外的约束。
    • 此外,拆分允许未来的词汇和方言在不需要进行任何验证的情况下不使用验证方面。
    猜你喜欢
    • 2017-03-01
    • 2019-02-28
    • 2015-04-15
    • 2013-04-18
    • 1970-01-01
    • 1970-01-01
    • 2015-08-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多