繁体   English   中英

了解JSON Schema草案版本4中的“additionalProperties”关键字

[英]Understanding the “additionalProperties” keyword in JSON Schema draft version 4

链接到规范: http//json-schema.org/latest/json-schema-validation.html#anchor64

第5.4.4.2节规定:

针对这三个关键字成功验证对象实例取决于“additionalProperties”的值:如果其值为布尔值true或模式,则验证成功; ...

第5.4.4.3节规定:

如果不存在“additionalProperties”,则可以认为它具有空模式作为值。

好的,所以如果“additionalProperties”不存在,它将被视为存在空模式。 如果它是一个模式(任何类型),那么无论其他任何考虑因素,该对象都会成功验证。

但是这与第5.4.4.5节“示例”中的断言相矛盾,即给定实例无法针对给定的模式进行验证(它没有为“additionalProperties”指定任何内容)。

有人可以解释我在哪里以及以何种方式误解了规范?

您在规范中发现了一个错误,因此您实际上并没有误解某些内容。

在IETF网站上有一个更新版本(两天后)的互联网草案,这个例子不同。

请参阅: http//tools.ietf.org/html/draft-fge-json-schema-validation-00#page-13

由于该文档是互联网草案,因此http://datatracker.ietf.org/上的版本很可能是正确的版本。

本备忘录的状态

此互联网草案的提交完全符合
BCP 78和BCP 79的规定。

Internet-DraftsInternet Engineering的工作文档
特遣部队(IETF) 请注意,其他组也可能会分发
工作文件作为互联网草案。 当前互联网列表 -
草稿在http://datatracker.ietf.org/drafts/current/

Internet-Drafts是Internet Engineering的工作文档
特遣部队(IETF)。

此外,这两个版本有不同的日期和到期日:

  • 您链接的版本 - 书面: 2013年1月30日和到期2013年8月3日
  • ietf上的版本 - 写于: 2013年2月1日 ,到期2013年8月5日

在IETF版本上:

此架构将用作示例:

  { "properties": { "p1": {} }, "patternProperties": { "p": {}, "[0-9]": {} }, "additionalProperties": false 

这是验证的实例:

{“p1”:true,“p2”:null,“a32&o”:“foobar”,“”:[],“小提琴”:42,“apple”:“pie”}

这三个属性集是:

  s [ "p1", "p2", "a32&o", "", "fiddle", "apple" ] p [ "p1" ] pp [ "p", "[0-9]" ] 

应用算法的两个步骤:

  after the first step, "p1" is removed from "s"; after the second step, "p2" (matched by "p"), "a32&o" (matched by "[0-9]") and "apple" (matched by "p") are removed from "s". 

集合“s”仍然包含两个元素,“”和“小提琴”。 因此验证失败。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM